Le fait que le jeu soit en 2D ne change pas grand-chose à vrai dire. GM possède un moteur de jeu très lent, et c'est un langage interprété, donc oui ça rame assez vite.
Pour pallier ce problème, tu peux scinder ta zone de jeu en différentes rooms, ou utiliser les fonctions instance_activate_...
Pour ta seconde question, c'est là que sont utiles les trois events Begin Step, Step et End Step. En l'occurence les mouvements de ton perso sont effectués juste après Step, il faut donc que l'objet suiveur se déplace via son End Step.