Są zamknięte w klasach, ponieważ w CSS-ie powinno stylizować klasy, a nie id. Oczywiście nie ma problemu, aby dodać id do tych elementów, ale pytanie: po co?
Nie powinno się stylizować po id, ponieważ nie mamy możliwości użycia tych samych stylów dwa razy na stronie. Identyfikator powinien identyfikować element, a jak to zrobi skoro będą dwa takie same? Jedno id, jeden element. Jedna klasa, n elementów.
Oczywiście, stylizowanie po id nie jest grzechem, ale nie najlepszym nawykiem, który później może nam przysparzać problemy i ich rozwiązania :).
.header jest stworzony po to, aby dodać górny i dolny padding. .socials dodaje tło. Oczywiście te wartości można wrzucić do .logo oraz .socials (Chociaż tutaj może się pojawić mały problem wyśrodkowania elementów wewnątrz niego. Mały problem, jak na metody, których Pan Zelent używa w kursach.).
Może .header i .socials zostały dodane dla lepszego zrozumienia kodu. No i jakby nie patrzeć, gdyby strona byłaby budowana w HTML5, to header jak najbardziej jest na miejscu, a .socials można potraktować jako section.