Существует два противоположных мнения, относительно включения одних заголовков в другие.
Как же поступать правильно?
Идея использования предварительных объявлений казалась мне удачной, пока я не начал сталкиваться с шаблонными типами, а так же с вещами, которые определены через typedef. К примеру, я так и не смог придумать, как сделать предварительное объявление для std::string вместо включения <string>.
ИМХО, первый вариант (копирование предварительных объявлений и прототипов в несколько .cpp файлов) слишком сильно портит качество кода.
Если так нужна скорость компиляции, то если другие (менее радикальные, и более действенные) способы ее поднять:
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости