Ob deine Header nun .h, .hpp oder .hxx heißen, ist völlig egal. Wenn du selber ein Makefile schreibst und keine impliziten Definitionen verwenden möchtest, kannst du die Dateien sogar header.deine-mudder-ist-ne-dateiendung nennen. (SCNR Finde es nur immer wieder schön, wenn Leute den Dateinamen ne große Bedeutung beimessen…)
In der Main includierst du natürlich die Header. Alles andere würde bedeuten, dass du auch gleich den ganzen Code in eine Datei schreiben könntest. Mehr mach #include nämlich nicht: Es kopiert den Inhalt der angegebenen Datei (temporär während der Verarbeitung) an der Entsprechenden Stelle in die Ausgangsdatei.