I've searched for an introductory guide and found nothing clear, I'm completely out of my depth as am only used to the Arduino IDE and compatible boards and want to look beyond this - being able to use generic boards and not development boards with all the bells and whistles.
Do you have any software development experience in C/C++ beyond Arduino?
Have you used the GNU stack before?
If the answer to those is no, then your options are a good STM specific IDE in windows or the Arduino boards.... or the third option, a long, slow disperse, multi-faceted learning curve.
I have been a professional C and C++ developer in the past and an amateur builder of custom linux distros but the GNU make, automake, autoconf stuff still throws me challenges, especially when you come to cross compiling for foreign environments. With the raw C/C++ you will find C/C++ is nothing at all like Arduino code which provides global functions designed to be newbie friendly.
So while there is good advice above from others, the main question I would ask is...
Do you want to get the board into use and doing things with it and pick up things as you go or do you want a long hard learning curve towards mastering bare metal STM uCs?