Although BUILD_SHARED_LIBS doesn't start with "CMAKE", it is much more than a standard convention: it is defined and used by CMake (it decides the type of libraries to build in add_library).
The only thing you could do is to have a SFML_BUILD_SHARED_LIBS in the cache, and then a local variable BUILD_SHARED_LIBS which is assigned to the other. But I don't think it's worth doing that just for the variable name.
I still wonder why the CMakers couldn't just let it begin with CMAKE_
What's the best?
No idea. I'm fine with SFML_BUILD_DOC, but I don't know what the big part of the libraries used.
I have no idea how to handle that in FindGLEW.cmake.
Can't you call mark_as_advanced() outside FindGLEW?
And another question: Wouldn't it be better to rename the text files (e.g. "license-sfml.txt" or "readme-sfml.txt") or to move them into some folder? Because I have Windows and a directory C:/C++Libs for all C++ libraries, which contains include, bin, lib folders, so the txt files are just in the top level directory and multiple libraries might overwrite each other's files.
What's the best practice to handle this on Windows? I use one common folder to avoid the specification of include and lib directories for each new library.