Здравствуйте. Смотрите, есть методологии типо БЭМ и прочих, которые помогают людям в наименовании классов.
Сначала про то, нужны ли вообще классы? - Конечно да.
Просто если использовать вариант с меньшим количеством классов, то так наш код будет меньше и чище.
Я не совсем согласен. Представим у вас более-менее большой проект, который уже работает и вы должны вносить изменения или просто работать с кодом. Когда вы откроете код - в большинстве случаев вы ничего не поймёте, особенно если там у вас есть например большие SVG и вообще много кода. Классы помогут во первых ориентироваться и не потеряться в коде. Если вы правильно назначили классы, вы в любой момент можете найти его и работать с нужным элементом. Советую изучить БЭМ методологию наименования. Она сначала кажется бесполезной, но поверьте, это мощный "инструмент" при вёрстке больших макетов.
Что касается того, чтобы прописать один и тот же код - я не вижу смысла. Да, может по БЭМ иногда даже нужно так сделать(если изучите - поймёте о чём я). Но вообще, если вы дали body какой то параметр, смысла давать его повторно другим элементам нет, они всё равно наследуются автоматический.