"USB in a Nutshell" [1] was really useful to me. As far as tooling goes I'd take a look at the "usb-tools" project [2] on Github. The GreatFET One hardware [3] is good and works with the Facedancer software hosted by the usb-tools project.
I enjoyed working on USBQ and learned a lot by doing it but the kernel loadable module it depends on wasn't written by me and probably needs some love. The usb-tools project and the related hardware has advanced quickly. Were I to do the same project over again (hacking Zwift for fun) I'd probably start there.
There is so much to USB... even some surprising things! [4]