Beh, per fare un esempio... di header e di footer in un sito ce nè UNO solo... !
E comunque l'attributo "id" non serve solo per i CSS ma si utilizza moltissimo anche con JavaScript!
class è un attributo generico che puoi usare per più oggetti nello stesso documento.
id è il NOME dell'elemento e lo individua sia nei css che in javascript.
La differenza in genere è che class lo usi per una categoria
per esempio
.evidente {font-size:1.5em;color:#ff0000;}
potresti usarlo più volte in un documento per evidenziare del testo.
gli attributi di stile all'id li dai in genere quando esiste una volta sola per esempio il div id="container" (o footer, o altro)