The easiest way to handle this type behavior is with either instanced variables inside the affected object or with global variables with settings the objects scan for.
The examples above cover this pretty well.
I would add that I have had no problems using a wait action when the delay is small. In my current project turrets and other enemies are "turned off" for 5 seconds when hit by a certain type of player weapon. I use instance variable in each called CoolDown (also used in my weapons to stop spam firing) and turn it to 1 when they are hit with the turn-off weapon and then do a wait-5s, CoolDown = 0 actions.
I just add If CooDown = 0 in all the important turret stuff and it works fine.
In your example I would do something like:
Enemy on created bullet speed 300
Enemy on collision with SlowDownThingy set enemy bullet speed 150
wait (however long)
Enemy set bullet speed 300
if you want something to determine when it can go back to normal speed then use an instance variable inside the enemy object.
Enemy on created bullet speed 300, set SlowDown 0
Enemy compare instance variable if SlowDown = 1 then set bullet speed 150
Enemy on collision with SlowDownThingy set Enemy/SlowDown to 1
on Later event set Enemy/SlowDown 0