Ti rispondo in maniera maccheronica perchè non sono un professionista della materia (quindi pronto ad essere smentito.

ob_start() è una funzione che immagazzina l'output generato dal file all'interno del buffer del php.
il buffer (non sò precisamente cosa è, ma in termini maccheronici) è una specie di memoria temporanea del php.
Una volta immagazzinato è possibile:
- operare su di esso e manipolarlo;
- rilasciarlo in un momento desiderato dell'esecuzione dello script;
- non sò cos'altro.
Il tutto utilizzando apposite funzioni e parametri.

ad esempio:
Codice PHP:


io sono bravo</p>
<?php
ob_start
();
$output_prodotto ob_get_contents();
$manipola_output str_replace('bravo''cattivo'$output_prodotto);
echo 
$manipola_output;
?>
è un esempio squallido... (ob_start accetta funzioni di callback... etc etc)

---------------------
nell'esempio che ho postato:
Codice PHP:
            ob_start(); 
            
header("HTTP/1.0 404 Not Found"); 
            exit; 
io l'ho utilizzata in un ambito non opportuno e che dovrebbe essere gestito diversamente:
essendo che inviavo un header, questo non può essere inviato se ho già inviato prodotto un output. Quindi io ho bloccato l'output con ob_start() e ho potuto inviare il mio bel header

Ma ti ripeto:
io l'ho utilizzato per gestire semplicisticamente una cosa che deve essere gestita diversamente!!!