Warum ?
1. Weil hier auch mal Leute mitlesen, die eventuell denken könnten, das wäre so richtig.
2. weil man nur Header includet, um dem entsprechendem Programm zu sagen, wieviel Speicher zu reservieren ist bei Funktion X oder Variablen Y. Die entsprechende *.c Datei wird später extra übersetzt(falls in Makefile angegeben) und zu dem fertigem Programm gelinkt.
3.Angenommen, Du hast Datei a.c, b.c und c.c, in c.c sind Funktionen drin, die von a.c und b.c gebraucht werden. Was passiert, wenn Du in a.c und b.c die c.c includest anstatt sie extra zu übersetzen und zu linken ?

Gruß Sebastian