For an IDE which offers some features like the Cube, I can suggest Coocox maybe worth a try. It's free, based on Eclipse and supports some of the STM boards out of the box.
From my understanding the CubeMX is just a code generator which will write you code (inside that folder you give it) where all the peripheral initialization is taking place. All other development has to take place in a normal IDE.
Update:
It was recently announced that Atollic Truestudio is now offered for free for STM32 users.
I guess that will give access to a higher end IDE and toolchain to a broader audience. I haven't used it, so I can't comment on it's features but built in hard fault analysis in the debugger could come in handy for example.
Definitely the CMSIS. It is not exactly a library, it mostly contains definitions for the various registers.
It is exactly what one needs to access the microcontroller's registers easy, so as to implement his/her own HAL. It has no overhead, since you just access the registers.
Keep in mind that CMSIS, unlike the other two, is defined by ARM and not ST. This means that the various CMSIS libraries out there for the various microcontrollers are quite similar, which greatly aids in portability.
Furthermore, CMSIS is the simpler one so it is (IMO) the most versatile, and most reliable, with possibly fewer (or no) bugs. Some hal libraries for the various mcu's that I've used are quite infamous for their bugs.
On the other hand, CMSIS needs quite more work from you. It is however my personal choice, since I prefer to invest my time creating quality libraries, that suit my needs, and understanding how the chip works, than just spending time to learn another, new library.
Best Answer
CMSIS files are in their own folder, and HAL files are in their own folder. Regardless of which toolchain is selected.