Each header has an “amount” of dependencies, each being another included header.
Some header files are very short and have only “‘system” #includes. They are known to be “light” headers with light dependencies.
Majority of my headers have more than two non-system #includes. Consider class declaration headers. The more custom #includes it has, the more dependencies it has.
My #include order is from heavy to light — Last to include are C headers. Above them are the c++ system headers. Among my custom header files, I include the simpler, lighter ones later. This way, if a heavy header is missing some #include (a coding error), it would (more likely) get caught by compiler.
A common practice is to put lots of “frequently used headers” in a util.h, and include it on top of every file. I don’t like it.