Hmmm...well, I don't have GM on me right now but I can suggest this bit of code.
Say you have some basic enemies named obj_enemy1, and some advanced ones named obj_enemy2 that come out after...what...30 seconds, let's say. And let's say the screen is 600 pixels wide and you're on the left like in Gradius.
Create obj_controller, and in its step event:
instance_create(300,random(room_height),enemy1)
Now you want it so that more enemies come out after 30 seconds. Make a timer (alarm[0]) in obj_controller's create event and set it to 900 (30 steps per second if the room speed is 30, and times that by how many seconds you need). Also in the create event create a variable, for now let's call it global.hardenemy. Create an Alarm[0] event, and increase your global.hardenemy variable by 1. Now in the step event of the controller add:
if global.hardenemy>0
{instance_create(300,random(room_height),obj_enemy2)
}
I believe this should work. The code will create an enemy at a random height on the far side of the screen. Remember to give the enemies the correct speed and direction on their Create events.