The mbed stuff can be a way to get a project off the ground quickly, but in a way it is not all that different from Arduino - still a lot of extras, still a lot of shockingly odd things going on under the covers if you have to dig into the details to figure out why something isn't working right.
mbed is indeed a lot like Arduino in terms of libraries. For my one big LPC1768 project I needed TCP/IP and I didn't want to write it myself. Their lwIP library worked fine. I didn't use any of the other libraries, I just wrote the code in C and called it good. In fact, I had to go this way because the mbed libraries didn't support interrupt driven SPI slave mode and this was an absolute requirement. So, sure, I had to fool around with the NVIC and write a little handler. No big deal!
On the LPC1768 chip there are two 16k regions of memory used for USB and such. These aren't generally visible although GCC knows perfectly well how to get there. I needed these two areas for buffers and I didn't see any library code at the time that would allow their use. No problem, C will get you there with a wee bit of help from the linker.
Like the Arduino, you can use as much or as little of the library code as you desire. Being able to just pull in an entire TCP/IP stack is fairly powerful. Add a MagJack and you're up and running on the network.
Things have changed quite a lot since I put that together in 2011. What is particularly interesting is the STM32F boards being added to the platform. OTOH, I kind of like CubeMX and the autogenerated code and this seems more workable using a local toolchain rather than the web based tools.