Some browsers (Netscape3 and Opera by default to name a couple) do not support header(location) so if you use that method you need to include a link after it in case the browser does not understand redirect, then you need to add an exit directive to stop the rest of the code from processing.
Redirects are used entirely too much, IMO. When I find myself getting redirected all over a site I start wondering whether the author was using redirect to circumvent laziness or ineptitude.
The alternative approach (which saves you the trouble of passing the variables) is to include the files, but it takes a bit more thought and preparation. This is a VERY simplified approach you might take for a login page (all on one page):
if (login was submitted)
...process/validate the form
if (login was successful)
...include welcome page
else
...display error
...include login form