1.- header() es una función PHP que permite enviar cabeceras HTTP. "Content-type" es, precisamente, parte de la especificación HTTP. Esto sirve para indicar al cliente que lo que estas enviando es XML (text/xml) y sí, debes incluirlo.
2.- Sí, es correcto. La razón por la que debe tener extención .php es porque estas manejando código PHP y tu servidor ejecutará dicho código solo en ficheros con extención .php; es por eso que antes te entregaba igual el código PHP, porque no lo ejecutaba... ¡cuidado con la seguridad ahí!.
El hecho de se reconozca bien el contenido (RSS) a pesar de una extención que no correspónde (.php en lugar de .xml) es porque estás enviando la cabecera indicada (ver punto 1

).
La extención es importante solo en caso de que no sea enviada una cabecera desde el servidor como para que sea el cliente quien se base en ello...
3.- :roll: No hay "etiquetas comúnes", es (son) una
especificación.
RSS 0.92 RSS 2.0 Atom
Saluton