Well, at this point, Blitz does not support multithreading, nor is a compiled project multithreaded, so there's no concurrency there. Of course, you can have multiple Blitz programs running, but they each have their own address spaces, register sets, (and message queues), etc.
As far as the events go, they're pretty much serialized as far as I can tell, and go into a single queue. Blitz has an internal message pump which "filters" or "translates" certain messages and sends them as a return value to WaitEvent. You're right that most of the events are user-based, though with some "hackery", one can probably figure out a way to receive/act on other WIndows events.
I'm not sure what you mean by "delays".
As far as the events go, they're pretty much serialized as far as I can tell, and go into a single queue. Blitz has an internal message pump which "filters" or "translates" certain messages and sends them as a return value to WaitEvent. You're right that most of the events are user-based, though with some "hackery", one can probably figure out a way to receive/act on other WIndows events.
I'm not sure what you mean by "delays".