Где лучше включать заголовочные файлы?
Вот, например, хороший ответ.This rule means that if the header uses a type - such as 'FILE *' or 'size_t' - then it must ensure that the appropriate other header ( or  for example) should be included. A corollary, often forgotten, is that the header should not include any other header that is not needed by the user of the package in order to use the package. The header should be minimal, in other words.
Вкратце: включений в заголовке должно быть как можно меньше, при этом в нём должны быть включены все заголовки, необходимые для беспрепятственной работы кода, в нём описанного.
В вашем случае, если vector используется исключительно в реализации и в описании blackbox'a никак себя не проявляет, включать его нужно в .cpp
Выше всё верно написали, но перед тем как просто следовать рекомендациям, хорошо бы ответить на вопрос: "зачем?". Все дело в основном (хотя бывают и другие случаи) в скорости компиляции программы. Поменяли что-то в заголовочнике, который включен в 100500 других заголовочников и ушли отдыхать на 15 минут, пока всё это компилится в 8 потоков :) Неприятно в общем. Т.е. золотое правило: чем меньше включено в заголовочник, тем лучше. Правда, в 17ом стандарте будут модули и эта проблема решится (ну всё равно тонны легаси никто сразу вот так прям не портирует, так что еще лет 5-10 эти знания будут актуальны).
Помимо этого, для увеличения скорости компиляции можно использовать pimpl (но осторожно, это не основное предназначение этой техники!) и программы вроде ccache (как, вы всё еще не на линуксе?).