Using these draw functions, you can draw as many or as few (or none at all) sprites in a draw event as you want. Each version allows you to take more control over what is being drawn. draw_self() is simply an alias of of draw_sprite(sprite_index, image_index, x, y), which is in alias of draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_rotation, c_white, image_alpha).
Draw_self() is what an object calls when it does not have a draw event.