1) Ogni .c viene compilato "per i fatti suoi", per cui è necessario includere tutto quello che serve, senza fare affidamento sul fatto che venga incluso altrove.
2) Chiarisci, magari postando il codice in questione...
3) Sì, anzi è normale. In genere è proprio nei .h che si definiscono le strutture.