As long as the header does not use the type other than reference it through pointer or reference, you can get away with the second, and probably better so.
For every header you include, the longer the compilation time. Therefore, it is better to add forward declarations as you do, when and if you can.
The real header must be included in the source file, naturally.

Just make sure to only include headers you need in each file. No adding stuff just because.