Zakładając, że masz następującą strukturę dokumentu HTML (jeśli <div id= "main"> to kontener głównej treści strony to lepiej zamienić go na <main>):
<main>
<header></header>
<section>
<header> </header>
</section>
</main>
Odwoływać się do elementów HTML z poziomu CSS-a można na wiele sposobów. Ten Twój zapis: main section header { } również jest prawidłowy (osobiście sam bym go polecił), ale jest problematyczny, gdy struktura dokumentu HTML ulega częstym zmianom (np. w przyszłości tego headera opakujemy w diva to trzeba będzie zmienić regułę CSS na main section div header { }). Natomiast jeśli do tego headera przypiszesz klasę lub indentyfikator będziesz mogła się do niego odwołać za pomocą header.jakas-klasa lub header#jakis-identyfikator. Musisz tylko pamiętać, że te same klasy możesz przypisywać do wielu elementów, a identyfikator powinien być użyty w kodzie HTML tylko raz.
No i nie wszystkie właściwości CSS są dziedziczone po rodzicu (to byłoby dziwne). Jeśli jakaś cecha (np. color: cyan;) jest nadana elementowi nadrzędnemu (np. <main>), to tego wspomnianego headera możesz obstylizować poprzez nadpisanie dziedziczonej właściwości (na jeden z wyżej wymienionych przeze mnie sposobów), np.
main section header {
color: cyan;
}
lub jeśli nadasz temu headerowi klasę:
header.jakas-klasa {
color: cyan;
}
lub jeśli nadasz temu headerowi identyfikator:
header#jakis-identyfikator {
color: magenta;
}