In my programs I have only ever included .h files, never .cpp
Include the .h files, but include them in .cpp files when possible.
Forward declare when possible, include when you must. Look up forward declaring if you're not familiar with it.
Your master class sounds like a bad idea. It sounds effectively like a global, which is generally considered a code smell. If everything can access and talk to everything else from anywhere, tracking code flow becomes a huge issue as the project grows.