Wow, I really wish I had read something like this when I attempted to write a program to use USB weighing scales in Linux.[0]
I learned things like needing to detach the kernel driver the hard way. And because I didn't know anything about USB (and still don't), I was stumbling my way through libusb. There I still missing features that I need to revisit once I learn how to use USB properly.