You're not being insulting, lol.
You guys are saying that I can draw something to the screen with a draw function and still make use of Gamemaker without writing everything out by hand.
So, we're kinda saying the opposite. There're two cases where you can just use the inbuilt collision events/mask.
1. You're using draw_self()
2. You're using this (in particular the arguments I've added * to): draw_sprite_ext(sprite_index*,image_index,x*,y*,image_xscale*,image_yscale*,image_angle*,image_blend,image_alpha)
If you do anything besides those, you're probably going to have to handle collisions and stuff yourself (although, it depends, like most things). Drawing something at a different position to x and y means that you'll have to calculate a collision at the new x and y coordinates yourself. Rotating or scaling the sprite seperately from image_xscale, etc, and image_angle, means you'll have to calculate the altered collision yourself (if it matters, for instance, often times people simply use a non-rotated square for collision regardless of what rotation the actual sprite has). If you don't use sprite_index, you'll have to account for the size of the different sprite you are using.
Basically, the inbuilt events are designed for use with draw_self(). Once you start drawing different things, you'll have to start working with the collision functions, not the events, and this often means supplying the "new" data to the collision function so that it accords with whatever you are drawing.
As a sidenote: Doing this kind of thing is
necessary and totally ok. There's nothing wrong with using events when it's valid and using collision functions seperately when it's valid. Trying only to stick to one or the other is going to introduce unnecessary workarounds in some scenarios. Use
all the tools you've been given by GMS when those tools are the best for the situation. And, as I've said before, a finished project that's not perfectly coded is worth infinitely more than an "eternally being worked on" project that is perfectly coded but will never be finished. The best game studios in the world end up using hacks by the end of their production schedule because it's almost impossible to anticipate every possible scenario and variation that can arise when you are just starting on a project, and constantly going back and rewriting code quickly becomes not worth the time, depending on how often you are doing it.
Give yourself a schedule and stick to it. If you find you are spending all of the allocated time trying to perfect code and you can't complete the project within the schedule,
make a note of that fact and alter where you are aiming your efforts. Time and effort (and life) is a limited resource. Spend it wisely to bring your projects to life while you can.