Careful, there. It's also important to remember that most of the events are global events; that is, events like Room Start, Step, Draw, and I/O handles and all of those fun in-betweeners like alarm and timeline handles occur at the same time for all instances (in order). So if you created 5 instances of an object and set alarm[0] for all 5 instances at the same time, all 5 instances will fire off their alarm events at the same time, rather than instance 1 firing off its alarm then handling its step, then instance 2 firing off its alarm then handling its step; in other words, it's instance 1 fires off its alarm then instance 2 fires off its alarm and so on, then it moves on to the Step event.
Also, the Create Event is handled before everything because it's not really an event per se, but a subroutine that is called every time an instance is created. The same is true of other similar events like Destroy and whatnot. Those events are handled immediately as interrupts within whatever global event is currently running. In other words, creating an instance during another instance's End Step event will cause the new object to miss out on the Begin Step, Mid Step, in-betweeners, and speed updates, but it will still get its image variables updated.
UPDATE
Also, creating an instance during the End Draw event will cause it to skip its drawing, so it won't be visible for the first frame (no surprise there). What that also means is the image variables will be updated before it's ever drawn. How is this pertinent to anything? Well, if you want to, say, clone certain old video games like, oh, Castlevania III which increases the image frame before they're first drawn, you'd have to have your enemy spawners create them during the End Draw event.