В двух словах
Class (.name) — многоразовый ярлык для группы элементов. ID (#name) — уникальный идентификатор на странице (по задумке HTML).
На практике
В HTML: class="a b", id="hero". ID используют для якорей (#section) и getElementById; для стилей в больших проектах предпочитают классы, чтобы не разгонять специфичность.
Итог
Class — стили компонентов; ID — уникальность в документе. Стилизовать через ID можно, но обычно хуже для масштабирования.