Think of it this way - each condition requires construct takes some processing time to determine if it's true or not. Some conditions are more resource intensive than others, like collision detection. There's no point to your second example because it just wastes cpu time checking if space is not pressed twice.
Event one:
If sprite1 is overlapping sprite2
Global variable = 1
Event two:
If sprite1 is overlapping sprite2
Global variable = 2
That would result in two collision checks when only one is needed.
Event one:
If sprite1 is overlapping sprite2
Sub event one:
Sub event two:
The way above would only check for collisions once. If no sprite1's are overlapping sprite2's, then sub events one and two are not checked at all. This way the runtime doesn't have to waste time checking the same conditions over and over again.
Another option for efficiency in this case is reversing the order of the conditions, because checking a global variable is far, far faster than collision detection.
Event one:
Global variable = 1
Sub event one:
- If sprite1 is overlapping sprite2
Event two:
Global variable = 2
Sub event one:
- If sprite1 is overlapping sprite2
This way the collision check is only run once as well even though there are two conditions for it. Another benefit is now the collision check is only run when it's needed, not every frame. In this case however, it's not even necessary to have sub events, as this example is functionally the same:
Event one:
Global variable = 1
If sprite1 is overlapping sprite2
Event two:
Global variable = 2
If sprite1 is overlapping sprite2
If the global variable = 3, then neither of the collision checks are run, because since the first condition was not true, it skips the rest of the conditions and actions in the event.