When I need to use something that needs to also be declared in the header, let’s say a member variable of some specific scene component, I’ve always included the header of the component in my header and that was it. It was then available in both my header and my .cpp for use. Recently, I’ve noticed that in the Unreal’s internal classes, it’s usually done such that there’s only forward declaration of the class in the header, and the actual inclusion of the header happens in C++.
No impact on gameplay since that is using an executable (the product of the link stage). By the time you have an executable or even object code within the compilation and link, the methods used to resolve source references are already resolved. The compiler just needs references resolved to generate object code.