1. Since you're using monochrome images there's a solution without using shaders:
draw_sprite_ext( sprite, subimg, x, y, xscale, yscale, rot, colour, alpha );
the argument "color" will set the hue of your image. You can either set colors
- with built in constants like c_red
- or in a hexadecimal $BBGGRR. $9999FF would be a light red
- or by using the function make_colour_rgb(red, green, blue);
2. If you want to use shaders, watch and read tutorials on those.
Basically you need to create a shader in the ressource tree and write a fragement shader (vertex shader wont be necessary in your case).
In draw event you need to set the the shader, draw the sprite and reset the shader. To optimze performance you should set and reset the shader only once. So make sure you set it in the beginning and reset it in the end only.
Most shaders also need to receive values so you need to setup those as well - the tutorials should explain what and how.
Xor has some great tutorials here (start at the bottom and work to the top, then there's more when you click on intermediate tutorials):
http://xorshaders.weebly.com/tutorials/category/beginner
3. There's a very intersting asset on the marketplace that might suit you as well and seems to be easy to implement. But I guess if you want to use monochrome sprites only this would be unecessary:
https://marketplace.yoyogames.com/assets/1661/retro-palette-swapper
I haven't bought it yet, but bookmarked it in case I ever want some palette swapping done.
So to keep things simple, just try option 1 and if that's not good enough, check the rest