PIC18 USB Introduction Microchip provides a USB stack, so much of the USB protocol is abstracted from the programmer. But you should still read about the USB protocol to understand the capabilities and limitations of USB communication. For background ...
USB in a NutShell - Chapter 5 - USB Descriptors
Brad Hards. "The Linux USB sub-system". Enumeration and Device Descriptors
Getting descriptors and endpoints from USB | Fuchsia
mem-log: Getting descriptors from a USB device (Windows) - PART 1 (Introduction)
Standard USB descriptors - Windows drivers | Microsoft Docs
USB Descriptors and their Types (Part 3/6)
Mouse Config Descriptor
Why Enumeraction Enhances Communicaton for USB Devices - Total Phase Blog