Когда создавать компонент, а когда директиву?
Если в терминах API ангуляра...
компоненты - это кастомные элементы с поведением
директивы - декораторы для компонентов, грубо говоря атрибуты для элементов, расширяющие поведение оных.
Компоненты — это по сути сахар над директивами. Так что использовать нужно их везде и всегда. Сами директивы остается использовать только в тех случаях, когда вам необходимо добавить какое-то поведение для элемента.
Почитайте это: https://habrahabr.ru/post/277087/