1. Why does it work without a standard library installed and added to the include files?
Why not? As long as you don't use any standard library functions, there is no reason why it should not work.
Adding include paths for well-known include files is not necessary, as the compiler already knows them, and with gcc, it is not even necessary to include certain headers at all, at least in C mode, as the compiler fills in builtin intrinsics (this is bad style, though).
2. Why is it possible to set directories for .lib files even though you have to add a .lib library to the project anyway?
Because that makes sense? I would not want to hardcode absolute paths into my projects, think of what happens if you move to another hard drive.
3. When building a DLL, is it possible to set a different output file for the .dll and for the .lib, and is it possible to set more than one output directories for the .dll (for every project using the .dll)
No, this is somewhat beyond the scope of our build system, and it does not make sense to me either.
However, if you absolutely think that you must have a dozen copies of your DLL, you can implement this using a post-build step, no problem.