No, subevents are not triggered simultaneously, they are triggered in order.
You are doing something wrong, but it's hard to say what from just this screenshot.
So lets say enemycount=5, then you repeat this loop 5 times and update 5 enemycore instances (which IDs are 0,1,2,3,4).
Is this correct?
Are you sure you need to reset the global variable buildup_threat_lvl to 0 on every loop pass?
Since you are setting it to 0, for enemycores with ID=1,2,3,4 the threat_lvl will be either 0 or 20 or 19 or -1 (depending on Line of sight conditions).
I suggest you create a text field on your layout and use it for debugging.
DebugText append text "i=" & i
DebugText append text " enemycores.picked=" & enemycores.PickedCount
DebugText append text " buildup_threat_lvl=" & buildup_threat_lvl
Add lines like this in several key points of your loop and you'll get much better understanding what's going on.
By the way, why are you not using For loop? It will automatically increment "i" for you.
For "i" from 0 to enemycount