calling a function that does nothing if no event happened, doesn't waste CPU at all.
This is simply false. Calling a non-blocking function to check for events ( such as PeekMessage() ) in a loop uses 100% of the CPU core that thread is running on. I'm sure laptop users running on battery would consider that "wasteful". Even with a Sleep(0) to relinquish the rest of your time slice, you're still making at least one function call which, by definition, uses CPU.
The problem is that this kind of stuff is not yet part of the C++ standard
What does that have to do with anything?
libraries providing it are too heavy to be used by SFML
I would love to see some profiling or benchmark data to support this claim.
Moreover, it's confusing for beginners
I'm sure C++ was confusing for them at first too.
doesn't mix well with C, which is required to write bindings.
If you're talking about the name-mangling differences between C and C++, I think that is solved by simply using "extern C" with your C++ functions. If you're talking about something else I'm not aware of, then you may have a point. I will admit that bindings for other languages aren't important to my particular use case.
calling an event handler from a separate thread is too much dangerous to be the default behaviour (requiring to be thread safe for a basic application is too much to ask, especially for beginners who might not even know what threads are).
I couldn't disagree more. EVERYONE needs to be conscious of thread safety issues, because single-threaded applications won't be an option for much longer, especially for resource-intensive real-time applications like your library seems to be designed for. Individual cores aren't getting faster at the rate that they used to (in some cases they are even getting slower). Instead, additional cores are being added. If your application's performance can't scale with the addition of more cores via multithreading, then your application won't be viable in the very near future. Furthermore, if you, as a library developer, don't realize this and design your library to be safely usable in such an environment, then nobody will be able to write viable applications with your library.
Anyways, it's also come to my attention that sfml contains intentional memory leaks, so it can't be used in any production-quality code anyways. It seems odd to me that you would point to the C++ standard above, while at the same time relying on the operating system to clean up your memory leaks...behavior which is obviously not garaunteed by the standard.