Your Welcome m8, I'm glad to help
1-The short answer is No
Let's go back the Basics:
Construc2 Runs the Events from top to bottom
Now you have "Top Events" and you have "SubEvents"
"Top Events" = To the First Event where all the action starts, it can have many conditions, here is where you Start the Picking for the (Objects or Variables, etc...) to who you want to apply your Actions.
As longs as the Conditions are true it will always run their actions plus any subevents.
Just to make sure you follow me I'm gonna point you the Top Events from the "Capx example" that I gave you
Event: (1, 6, 8, 11, 12) are all Top Events the ones with Green Arrow are "Triggers" by the way which means they run once only when they trigger, but for now, lets refer to them as top events
So now as for your question (Bullet On collision with Player) has just one condition if is true will always Trigger & Run his actions and subEvents
"SubEvents" = is an Event under the rule of the "Top Event" ins the name SubEvent.
Now these works different, the subEvents will Never run unless the "Top Event" runs.
so is like saying
-Unless the bullet hit the player the subEvents (2 & 4) will never be checked
-Unless event (6) Triggers SubEvent(7) will never be checked
-Unless (8) Triggers SubEvent(9) will never be checked
SubEvents have many benefits example to help you filter more the Picking into a different Groups, another one is to help organise your Events and structures so your code becomes easier and simple to understand, plus probably more things that I cant remember
2-Here we have two things going on
-The first you need to understand that I would like to use and Else as you can see on SubEvent 4 to separate the logic into two categories
-The first category = equal to if the Health is (equal or greater) than 1 then run these Actions and subEvents
-Else = if the Health is lower than 1 then Run these actions and subevents instead
so I have to separate the event 2 from 3 because other ways if I put them together it can mess up the Else on event 4 also is to help me understand the events much quicker because the else is related to the player's Health not to the Hearts so it makes sense to separate event 2 from 3
So the answer why event 2 has no actions is empty because I use it just to filter players health is => than 1 so I can use the else on event 4
3-Here "Frame" is an Instance Variable of Hearts be careful don't confuse it with the hearts "Animation Frame" you can change the name to a different one if you wish if you think it will confuse you.
you can do this by clicking on each heart and on the left properties panel look for the section that says "Instance Variables" there you will find one Variable which is "Frame" you can change it to your needs.
Also there you can see the Values of the hearts example
You have 5 hearts
Heart "Frame" = 4
Heart "Frame" = 3
Heart "Frame" = 2
Heart "Frame" = 1
Heart "Frame" = 0
So in event 3 or 5 when we ask if heart "Frame" = to players Health it will Pick the heart that has "Frame" = players health
Players health = 1
sub event will pick only the Heart "Frame" = 1
That's how c2 knows wich heart to Pick as we don't have any two hearts with the same value there is no confusion
4-I explained it on the answer 2
5-Yes, Timers has many benefits, one is to replicate what you were trying to do with the "waits" but the difference is that
-Timers Are independents to the object or instances that are calling them
if an object calls a Timer for 2 seconds then the Actions will not trigger until the Timer stops
Event 3 Picks the right heart and starts the Timer for 1.83
on Timer ended then >>>event 6 will trigger and Pick the heart who called the Timer
6-AFTER the 1.83seconds the Event 6 Triggers and run their Actions
-you create and you can choose any name you like but make sure you put the exact name when you call the Timer as when you call the Trigger
event 3 and event 6 both reference the same Name "Hide_Heart" so they are linked
-Yes event 6 will only Run if you call the Timer first like in event 3 or 5
7-Normally most of the games they link Players Health with the HUD display, where they show the players Health like I did with the Txt object on the screen showing the Health.
Now I don't know if it will happen in your game but there is the possibility that example 20 Bullets hit the Player at the same time and if the player was already Health = 1 then it should go down to -19
making the HUD health looking -19 which is weird at list I didn't see it yet on any Game Health going down less than 0
So the short answer is to limit and reset Health so it doesn't go under -0
8-When you leave an event empty it becomes like "Every Thick"
-So the Event reads like >>>Every thick update the Txt to display Health
Note this part is just for debugging where I like to use Txt and update every thick but you should know that this way is very Cpu demanding and is not the correct way of doing it if you wanna display on an exported Game
The correct way will be to use
-Update the Txt only when you need it, example you could delete event 8 and just update the Txt on event 1 because is when we manipulate the Health, I didn't do it because I didn't want to add more actions there to confuse I prefer to leave them clean just the action related to the event to avoid any confusion
I hope I clarified all your questions
Special recommendation for you to check Asap