Cita: NULL representa a la dirección 0 (cero) de la memoria. No puedes leer ni escribir datos en ella y es el valor por defecto de los punteros.
La función time_t time(time_t*) devuelve la hora actual y, si el argumento que se le pasa es distinto de NULL (es decir, es alguna dirección que no sea cero), también escribe la hora actual en esa dirección. Por tanto, time(NULL) simplemente devuelve la hora pero no escribe ese dato en ningún sitio de la memoria porque su argumento es la dirección cero.
Espero que te aclare un poco mas, esta explicacion la puso un amigo mio en otro foro. Me parecio la mas correcta y simple.
Un saludo.