STM32 are 32 bit ARM microcontrollers, that are in generally too small for Linux but also to big to have a DIL case for the hobbyist. However when cost is an issue and a Linux board is too expensive or not robust enough and a small device as a AVR is too much a compromise to write Software or if a hobbyist wants to do something professional, then STM32 are a good choice.
There is good support with gcc. There are different ways to start with programming them. The most modern way is cube that has, libraries, tools, board support packages, high abstraction layer including RTOS, FAT, TCP/IP and USB: http://www.emcu.it/STM32Cube/STM32Cube.html or for the specific micro-controller series F4. Registration is required to get the software.
A tool chain is required and does not come from ST. However ST supports different tool chains and even onces that are free as:
Standalone IDE https://atollic.com/truestudio/
Eclipse based. Two ways for the installation are possible:
Register and get the installer that comes with eclipse and all required
Start an already installed eclipse and follow the steps required to get the plugins. Those steps are roughly adding the update site with the name System Workbench for STM32 - Bare Machine edition and its location then click a couple of time ok or yes until eclipse is happy.