Bo plik nie może bezpośrednio zwracać danych, bez znaczników <?php interpreter PHP próbuje (z powodzeniem) wyświetlić dane bo traktuje je jak każdy inny plik.
Natomiast wyświetlanie danych przed header() kończy się błędem bo klient kończy odbieranie danych w tym momencie.
Przykładowo:
<?php
echo 'tekst';
header('jestem headerem');
Wygeneruje błąd, natomiast:
<?php
header('jestem headerem');
echo 'tekst';
Poprawnie wyświetli wszystkie dane.
Więc do wyświetlenia danych z pliku odsyłam do: http://forum.invisionize.pl/tutorials/article/34-podstawowe-uzywanie-php-w-szablonach/
Masz tam też przykłady z plikami includowanymi.