Working with mostly microcontrollers I've had a mixed bag of result with libraries from the hardware vendors.
I often find that with peripherals of more complexity than GPIO, its often easier to work through the datasheet and write my own driver to do the job rather than using the library. There a couple of advantages to this. One, I know how the code works, and two I know how the hardware works, and this makes fault finding a heck of a lot easier.
Often vendor libraries are designed to be very general purpose, and I've seen it before where some libraries do simple things (like toggling an IO) taking several times the number of instructions as it needs to (even on optimised builds), just because theres extra checks for certain conditions.
Most 'simple' hardware (i2c, spi, adc etc) on microcontrollers only require a few registers setting up to be able to use, and once you have read the relevant parts of the data sheet and programmed the registers manually, you'll wonder what the heck all the code does in the vendor library!
Going another step, I do tend to use libraries for more complicated features such as ethernet drivers. Having said that, however, I did huge issues with bugs in the STM32H7 ethernet library when that family was first released, ended up re-writing most of the driver in the end, but this highlights an issue with libraries that aren't mature.
In terms of good vendor libraries I’ve worked with, the EFMLib suite for the EFM32 Gecko micros from Silicon Labs are very simple, and usually get straight to the point. But as a counter argument, the hardware is also very easy to work with, which makes writing your own drivers easy too!
I’ve come across a lot of microcontroller developers who have no concept of how the hardware works, and have never looked at a microcontroller datasheet due to an over-reliance on libraries. One particularly bad example used a library that worked entirely with floating point numbers, and then complained about not having any space (or performance) on an ATMega..