It is important to understand that instance mask and sprite are not permanently linked to each other. In default state, when you just attach a sprite to an object and don't touch the draw event (or just do draw_self which is the same thing) they reflect each other. But any change you implement afterwards can detach them. When instance is created, it gains its mask properties from the attached sprite; these become instance properties. If you make a draw event that draws nothing, the mask still exists and responds to collision events, because instance still carries those properties. You can change the mask separately too (the command escapes me right now). Whatever you draw in draw event will not reflect back on the instance and won't change its properties. Same goes for image_index and other variables, they are instance properties. Drawn sprite (or sprites, since you can draw as many as you want to) are just visuals, they may or may not reflect instance properties (but most of the time you want them to, especially if collisions are involved) depending how you wrote the draw command.