Вы не правильно представляете себе то, как сервер отдает страницу.
Дело не в расширении файла. Браузер видит только ответ на запрос. по адресу example.ru/some.html - может быть js, на пример. Дело, как и в обычных файлах - в мета-информации. В данном случае это заголовки, с которыми сервер отдает страницу.
Так что с помощью php тянутся данные из бд и подставляются в шаблон и сразу выводится. Работа с файлами каждый раз - слишком дорогая и не нужная операция.
Я не призываю сразу использовать какой-то фреймворк, но
http://symfony.com/doc/current/book/http_fundamentals.html - тут описывается как делается приложение не правильно, почти правильно и совсем правильно, если так можно сказать. Очень советую прочитать)