Le regole non sono assolute ma dipendono dal programmatore, cmq in linea generale si mette l'interfaccia di una classe nel file .h per separare l'interfaccia dall'implementazione e quindi rendere la vita più facile a chi andrà ad usare quella classe (a cui importa solo dell'interfaccia).
Se la tua classe è puramente astratta, oppure i metodi che implementi sono pochi e piccoli potresti voler mettere tutto in un unico file, altrimenti spezzi come al solito.
E' ovvio che i metodi in comune li devi implementare nella classe astratta: metti che vuoi in futuro modificarli leggermente...è molto più comodo modificare soltanto la classe astratta piuttosto che modificare tutte le 5-6 classi derivate giusto?
Per i metodi che cambiano...nella classe astratta non devi fare niente ti pare?

Rispondi quotando