Главной причиной является SQL. Очень полезно быть в состоянии использовать данные из базы данных в других контекстах за пределами приложения, и часто с объектными базами данных данные хранятся в формате, который не может легко быть запрошен. С реляционной базой данных данные могут стать частью хранилища данных, например, или просто запрошенный sys администраторами и т.д.
ah и bh будут частью предварительно скомпилированного заголовка, и нет необходимости включать их позже. Все, что вам нужно, это включить stdafx.h, где требуются ah или bh. Если вы включите ah или bh явно после stdafx.h (весь код до включения stdafx.h игнорируется), он не будет компилироваться второй раз (просто потому, что они обычно защищены #pragma once
или определяет), но компилятор откроет этот файл на жестком диске, если вы спросите об этом,
Кстати, вы должны знать, что вы можете использовать несколько предварительно скомпилированных файлов заголовков (но не более одного в каждом cpp файл).