Perdón por preguntar tanto, pero he intentado buscar una solución a este problema y no encuentro una que funcione.
La pregunta es, como hago para que las instancias del objeto alien (en un juego estilo space invaders) disparen (de una en una) y lo haga una instancia aleatoria cada vez, a un tiempo relativamente aleatorio (que disparen de vez en cuando, pero cada poco tiempo, sin ser este una cantidad concreta).

Podrias crear una lista en otro objeto y agregar la id de cada nave a ella y desordenar la lista (ds_list_shuffle).
Para ir moviendote por las posiciones en la lista crea una variable y una alarma, en la alarma aumenta en 1 el valor de la variable y usa la id guardada en la lista en esa posicion para hacer que esa instancia dispare.

¿Cómo consigo la id de cada instancia?

Otra opción que se me ocurre es jugar con las alarmas y la función choose. Si usas esta opción, recuerda usar randomize() antes del choose.

Puedes agregar las id a la lista de esta forma:
[gml]
lista=ds_list_create()
with(obj_enemigo) {ds_list_add(other.lista, id)}
[/gml]