Как лучше: повторять стили или ставить много классов?
Никак, давай элементам осмысленные имена. Не как они должны выглядеть, а что они из себя представляют. И не надо делать классы, явно указывающие на размер/цвет и т.д. Потому что это почти ничем не лучше, чем вёрстка прямо в html-коде через атрибут style. 
Можешь посмотреть как рекомендуют чуваки из яндекса.
1й подход разумеется. На больших проектах никуда без этого. В исходный код того же яндекса зайдите и все увидите. А бутстрап? Тоже самое, взгляните например на создание кнопки! Там основа, цвет, размер. Так же и вам нужно делать, да и всем! Для этого и придуманы классы, что бы использовать их много раз, а писать 1!
Только именовать все нужно так, что бы было понятно, что этот класс делает!
but - Создает основу кнопки.
butWarning - делает кнопку с оформлением, означающим осторожность!
butBig - делает кнопку большой