Вам ничего не мешает делать по старинке: один глобальный файл с глобальными стилями.
Ну, или иначе. Если вы хотите инкапсулировать стили — тогда все они дожны быть внутри компонентов.
А если у нас есть две совсем одинаковые кнопки, которые отличаются лишь цветом + находятся в разных компонентах?
Глобальные стили или отдельный компонент с кнопкой.
Как наиболее правильно с точки зрения good practice назвать имена классов?
На самом деле как вам удобно. Лично я использую следующий паттерн
class=" component-root <component-name>-component-root "
UPD.
Если есть необходимость передать какое-то свойство в нутрь компонента, то можно сделать это через кастомные свойства:
<style scoped>
.button {
color: var(--text-color, green)
}
</style>
<button-component style="--text-color: blue"/>