Nel file header devi semplicemente mettere i prototipi delle funzioni, cioè cosa restituisco, il nome, eventuali parametri; inoltre se utilizzi strutture dati da te create e poi implementate definisci un puntatore a tale struttura.
Ti posto un esempio su una libreria per gestire liste di stringhe:
questo è il file header stringlist.h
/*puntatore a nodo di una lista
*/
typedef struct node* stringlist;
/*Restituisce una lista composta da un solo nodo
*/
stringlist newNode(char*elem);
/*
*Scrive lista su console (ricorsiva)
*/
void printList(stringlist lista);
...ecc...
poi nel file stringlist.c ci sarà un
#include "stringlist.h"
poi, siccome io avevo definito un puntatore ad una struttura "struct node", ci sarà la definizione di tale struttura, più l'implementazione di tutte le funzioni indicate nell'header (devi mettere completamente l'intera funzione, compreso di prototipo) + eventuali altre funzioni (se ti servono)