Compilers are allowed to include headers within headers. However, it is not recommended that you rely on the behavior of your particular compiler, as it may vary within different versions of the same compiler or even with different compiler settings and the same version. And, it will certainly vary for different compilers. So to be portable, use the required headers.
TL; DR: Use the correct headers. That it works how you expect it to is coincidence.