Gli header servono a mettere a conoscenza il compilatore dei tipi di dato e delle funzioni, ma non producono nessun effetto a livello del codice oggetto. Per lo più in function.c tu utilizzi la struttura definita nell'header e definisci le funzioni lì dichiarate.
In ogni caso l'inclusione di un'header non implica nessun overhead.