Hi. There is a simple error in your testing of the global variable:
+ orange_pistol_enemy2: Value 'Hit Count' Less or equal 0
-> orange_pistol_enemy2: Destroy
-> System: Set global variable 'enemy_choice' to random(2)
-> player: Add 1 to 'Score'
...
+ System: global('enemy_choice') Equal to 1
-> System: Create object orange_pistol_enemy2 on layer 1 at (random(3000), random(3000))
+ System: global('enemy_choice') Lower or equal 1
-> System: Create object green_shotgun_enemy on layer 1 at (random (3000), random(3000))
-> green_shotgun_enemy: Set speed to 200
Random(2) will result in either zero or one. If it's zero, you'll get a shotgun enemy. if it's one, you'll get both enemies, because both are true on one.
So, Lower or equal 1 should be Equal to 0, or possibly Lower than 1. In this case, I'd favor direct equality testing with Equal to 0.