Callbacks are abstractions for interrupt handlers, in general, if you use the HAL you don't need to be aware of many low level details. The NVIC is programmed automatically when you start/stop device drivers.
The HAL is very different from the standard library:
1) HAL is an actual abstraction layer, the STD library does not abstract anything, you need to be aware of all details.
2) HAL does internally all the complex tasks, setting up IRQs, DMAs, initializing peripherals, setting up clocks etc. The application only sees the high level API.
3) HAL is not meant to match and support 100% of the underlying hardware, it is meant to implement high level functionalities. The STD library tries to expose all the features of a specific STM32 device.
4) HAL is very thin, STD library is quite a bit larger (much larger).
5) HAL is not limited to STM32, it is meant to be portable to any MCU.
The literature is the documentation and the various articles on the web site, if you Google ChibiOS you will find several interesting guides created by various authors.
About ADA, well, there is nothing preventing that
Giovanni