Dependencies headers need ot be distributed only for people who want to recompile your library, not for the end users (just in case it was not clear).
Some cross-platform libraries handle platform-specific differences in their build system rather than preprocessor tests in their code. For example, they use CMake, autotools, scons or any other meta-build system, to configure their sources and adapt them to the target platform. That's why there can exist several versions of the headers of a given library.
OpenGL headers are shipped with your compiler (on Windows), that's why SFML doesn't provide them.