I understand that the purpose of having header files in C++ is to separate the interface from the implementation. In other words, we're specifying a contract between the implementation file and header file, that it must write to the specifications of the function signatures inside the header file and if it doesn't do so, a compiler error is thrown.
However, I don't understand whether this makes compilation faster or just decreases development time? It makes sense to have forward declarations of our functions and have the compiler catch any errors we make in our definitions (for example, we have a different number of parameters in the implementation file's function than what was specified in the header). So catching these errors at compile time rather than run time definitely helps with development time.
At a lower-level, is there any advantage in compile time by including our own header files?
Edit: OK, if there is no advantage in compilation time, why do we have header files besides the separation of interface and implementation?