По принцип не е задължително, ако се внимава.
Защото може да има случаи, когато например инклудваш PHP файл ПРЕДИ headers(), и ако в този ПХП файл има output, той ще издъни headers() функцията.
Например:
<?php
include ‘qqq.php’;
header(‘Otkradnati: kartini’);
header(‘Cache-Control: no-cache’);
Ако в qqq.php имаш output, който може да се получи и само с един интервал след ?> това значи, че ще имаш output преди headers().
И ще имаш Warning: Cannot modify header information – headers already sent by…