Recibe string correspondiente a un captcha como variable de session: $_SESSION["captcha"], lo genera y lo muestra.
Logicamente se genera ese string y se guarda en $_SESSION["captcha"], luego hay una redireccion o el visitante sigue un enlace, etc y llega a una pagina captcha.php por ponerle un nombre con este script que creeria es cargado dentro de un iframe ya que el script termina sin validacion del captcha.
Una variacion seria guardar la imagen generada como variable de session (te tocaria quitar esos headers y capturar buffers) tambien junto con el tiempo de generacion (timestamp) y posiblemente la URI asociada y asi establecer que ese captcha puede usuarse por un tiempo antes de expirar.
Estudia SESSSIONs en PHP
PD: el tema de las cabeceras no lo tengo tan claro... pero
aca hay mucha informacion