Zu 1., stimmt nicht, ihr habt beide Recht, es kommt auf den Compiler bzw. den Dialekt an.
Zu 2., stimmt auch nicht, in diesem Fall hast du recht, aber die ohne .h sind einfach die überarbeiteten für C++(in diesem Punkt hast du recht). Aber es gibt viele die noch .h als Endung haben.
Edit...