Да, я бы порекомендовал #include 'любая зависимость ИНТЕРФЕЙСА в любом заголовке.
В этом случае да: я бы #include "A" (потому что интерфейс B зависит от A).
В противном случае, если в реализации используется «A» (но в заголовке нет), я бы только #include A в .cpp (потому что это не часть интерфейса).
Под NOЯ бы хотел, чтобы обстоятельства заголовков имели значение, если их вообще можно было избежать.Как правило, порядок заголовков НЕ ДОЛЖЕН иметь значения.
ИМХО ...
PS: Как бы ни хотел Бьярн Страуструп, макросы препроцессора и препроцессора все еще очень важны для нас.Конечно, в C-Land, и, конечно, практически в любом Microsoft API.Это просто хорошая форма уважать этот факт.