Primero la parte de crear el archivo, no es más que una serie de "echo" (s) que al final del código quedaran como un HTML como también pueden quedar como cualquier otra cosa.
Luego la parte de crearlo en el servidor, tan solo colocas el contenido de la nueva página HTML que deseas crear y la colocas en una variable (por ejemplo $contenido), cuando ya tienes todo el contenido que deseas haces:
Código PHP:
file_put_contents($archivo, $contenido);
Hasta ahi se genera el archivo, luego para descargarlo haces:
Código PHP:
header('Content-Disposition: attachment; filename="'.$archivo.'"');
El código final te debería de quedar más o menos así:
Código PHP:
<?php
$archivo = "prueba.html";
header('Content-Disposition: attachment; filename="'.$archivo.'"');
$contenido = "<table><tr><td>Hola</td></tr></table>";
file_put_contents($archivo, $contenido);
echo $contenido;
?>
Saludos y espero haberte ayudado !