Pues que el padre sea .html no tendira nada que ver. Quizas es por el orden de carga de los ficheros. Igual que ves como va cargando cada una de las imagenes de una pagina, supongo que hara lo mismo con los iframes. Y puede ser que se carge antes el codigo del iframe que la capa en el padre. Entonces ejecutaria ese javascript antes de que se haya creado la capa. No se si ese codigo PHP es el definitivo, pero podrias ponerlo directamente fuera del echo, para hacer la prueba, ya que no veo variables PHP dentro del echo:
Código PHP:
<html>
<head>
</head>
<body>
<?php
?>
<script language="JavaScript">
window.parent.esperacp.style.visibility = "hidden";
</script>
</body>
</html>
Lo dejas como .php. Si sigue fallando, pregunta en el foro de Javascript si puede pasar lo que comento. Tambien les deberas dar el codigo del padre, indicando donde pones el iframe y donde creas la capa.
Suerte.