What you have so far looks great, looks very much like the original LTTP, as for having the boomerang return to link, just have it go towards the player in the step event instead of just back the way it came from:
if instance_exists(obj_player) {
direction = point_direction(self.x,self.y,obj_player.x,obj_player.y);
}
Not sure exactly how your boomerang mechanic works but i hope this helps anyway, gonna keep an eye on this project.