Pour les extensions, tu peux mettre l'extension que tu veux mais il faut faire attention a :
- Si tu veux que le php a l'interieur soit interprété, il faudra ajouter l'extension comme étant potentiellement un source php pour apache via "AddType application/x-httpd-php .tpl" dans le httpd.conf
- Cette manip n'est pas nécessaire si c'est juste un gabarit que tu inclus via include ou require dans un fichier déjà parser comme les .php
- Le ZendFramework par exemple utilise l'extension .phtml par defaut mais elle n'est pas obligatoire.
2/ Pour les headers, la gestion de l'envoie différé des headers est importante car une fois envoyé, on ne peut plus le retiré (tu peux juste savoir si des headers ont été emis), en revanche, si tu gères une queue qui sera emise a la fin, tu peux l'altérer à tout moment.
3/ il est courant d'avoir un squelette global de la page qui fait lui meme appelle a des sous-template découpé en brique fonctionnelle. Par exemple tu peux avoir 2 templates principaux qui définiront pour l'un un layout 2 colonnes et pour l'autre un layout sur 3 colonne, mais l'entete, le menu, le footer etc seront commun et inclue dans les templates principaux. De cette facon, si tu retouches l'entete ou autre, tu n'as qu'un endroit ou le faire.