I agree, curl is great but the API is very difficult to use. Self plug, I've built my own curl c++ wrapper [0] for making thousands of requests per second (libuv event loop driver) and I find a cleaner API gets new devs into it a lot easier. It's definitely far from feature complete but I get a lot of mileage out of it.
Generally yes. You just 'move' pointers through the callbacks and expose RAII request objects to the end user, they don't see any of the ugliness underneath.
[0] https://github.com/jbaldwin/liblifthttp