Header() simplemente envia cabeceras HTTP al cliente (navegador en tu caso).
Las "cabeceras" y en general todo lo que PHP va generando como "salida" hacia el buffer de salida se "entrega" al cliente (se envia) cuando el script termina su ejecución (si no es forzado por otros médios antes).
Por eso, como el objetivo de un "header()" de tipo "Location" es "redireccionar en ese punto del flujo del programa/script hacia otro" .. lo lógico es que uno termine también la ejecución del script en ese punto obligando a PHP a que envie todo lo que tenga en el buffer de salida al cliente y en consecuencia envie la cabecera HTTP de "Location" que le informa al cliente que "cambie la página a otro URL dado".
Por otro lado, los links de conexión a Base de datos (no persistentes), variables (no de sesión) y todo proceso en general de un script en ejecución "muere" al terminar la ejecución del mismo (que llegue al final del script o se fuerce su termino con un exit).
Cita: Es extraño pq si pongo un exit() despues de un header(location); el programa no corre, muestra la pantalla en blanco como lo hace cuando hay errores de sintaxis... :S
Deberias indicar el código que usas .. tambien revisar tu configuración de PHP sobre los mensajes de error que muestras: (php.ini) directivas tipo: error_reporting .. display_errors .. etc. Es probable que puedas tener un mensaje de error que se esté originando pero no lo ves en "pantalla" (tal vez en los log's de erroes de PHP los veas si los generas ..)
Un saludo,