Der Sinn, nur die Methodendeklaration in's Headerfile zu schreiben, ist denke ich die Abstraktion.
Sobald die Methoden deklariert sind, kann dein C++-Programm / Klasse kompiliert werden.
Das heißt, du kannst die Syntax deines Codes mit der Kompilation überprüfen, ohne dass die Methoden implementiert sind.
Angenommen, du arbeitest mit einem Freund an einer gemeinsamen Klasse. Dann kannst du sagen, hey Dieter, implementier du mal die Methode foo(); ich mach derweil die Ein-/ Ausgabe.
Während Dieter deine Methode implementiert, kannst du also am Programm weiterschreiben, wenn du bereits weißt, was deine Methode zurückgibt und welche Parameter sie erwartet. Was du schreibst, kompiliert dann nämlich, nur Linken geht nicht ohne Implementierung.
Deshalb tut man normalerweise ausschließlich die Deklaration in die Header-Files. Implementieren kann man die Methoden dann wo man will
/edit: Naja mit ifdefs kann man das Problem der mehrfachen Einbindung ja umgehen