Ваша структура проекта под верстку?
Посмотрите, как разработчики React трактуют принцип единой ответственности (single responsibility principle). Для начала идет совет разбить макет на прямоугольники и вообще спросить у дизайнера их названия, вполне вероятно они уже есть. Либо отталкивайтесь от модели данных, и для каждой маленькой логической части во view должен быть свой компонент.
https://reactjs.org/docs/thinking-in-react.html
Мой ответ - если вы можете придумать логичное название компоненту, то нужно его вынести. Вот вы придумали: шапка, подвал, логичные названия, выносите смело! Это означает семантически уже сработал принцип единой ответственности.
Что есть для вас компонент а что нет?
Компонент: логически отделяемый блок, который служит для одной цели
Все можно разбить на компоненты, вопрос только стоит в целесообразности. Например, если у вас есть список с пунктами, и эти пункты представлены только одним тегом с парой классов стилей, тогда можно не заморачиваться выносить их в отдельный ItemComponent. Но являются ли такие блоки как логотип, шапка, футер компонентами?
Ответ выше. Хотя это может быть слишком субъективно, но на практике нет смысла выносить каждые пару тегов отдельным компонентом. Потребуется лишь тогда, когда родительский компонент разрастется.
Например, пишу на Vue.js + Pug + Sass и стараюсь выносить компоненты только тогда, когда шаблон или стили будут занимать больше 60-100 строкВ: 
Да, только еще вопрос стоит в том, будут ли вложенные компоненты уникальными для текущего? Если да, то имеет смысл поместить их в директорию с текущим. Иначе они могут использоваться другими компонентамиВ: 
Да