O .h ou .hpp conceitualmente são arquivos de cabeçalho e possuem códigos que o compilador precisa para compilar outras partes. Em geral ali contém apenas as estruturadas de dados (classes por exemplo) com as assinaturas de métodos e funções, além de implementações que devem ser linearizadas ou gabaritadas.
Gostaria de saber qual o uso mais recomendado dos arquivos *.h? Pois não sei se posso usa-los só para colocar o protótipo das funções ou a função por completo.