Nel file .h devi inserire i prototipi di funzione ed i tipi di dato definiti da te. I prototipi vanno definiti come extern, mentre i tipi di dato dovrebbero esser accompagnati dal loro typedef. Il file .h deve esser hash protetto per evitare inclusioni multiple.
Nel file .h non implementi nulla. E' il tuo contratto con l'esterno.
Il file .c include il proprio file .h ed eventualmente altre librerire.
Qui implementi tutti i prototipi che hai "promesso" nel file .h. Eventualmente, se vuoi creare variabili o funzioni che non devon esser viste all'esterno, puoi farlo definendole come static.
Ciascuna libreria da te creata va compilata. Poi linki tutto in un unico file output.