Well thanks to testDummy, it works how I would like. The key was moving the ent_remove(me) to the move_projectile() function and breaking out of the while loop by setting a flag to on in the trigger event.

Now, I know its fixed, but can anyone tell me why my original code didn't work. I have used ent_remove() inside trigger events before and never had a problem. This is used in AUM all the time. Infact, the asteroids which I shoot in the game do this now and work perfectly. Are there special cases for trigger events? Does the while loop inside the function which calls the event interfere with the trigger event?

Just a quick note: I'm pretty sure while(me) or while(my) is the same as while (me != null).