It is not typical to have a "main.h" - but there's certainly no rule that forbids it.
As to what needs to be included, and how you achieve that, really depends on what the respective classes do, what knowledge of each other they need.
It is generally considered a bad idea to have "one include file that includes everything else" in the style you describe. For several reasons:
1. It is hard to see which source file depends on which includes.
2. You get longer compilation time as the compiler has to read through a bunch of class definitions that aren't being used.
3. You can't easily take, say, "car.h" and "car.cpp" and stick them in another project without "speed.h".