Well, that product has an extra chip on the board, which is a USB to Serial chip ... so the microcontroller doesn't have any USB functionality built in, and communicates with the chip using plain serial, leaving the complexities of the usb to the usb-serial chip.
It's not as user friendly as showing up as a mass storage device with a drive letter in Windows, allowing you to copy a file there... but it's much less complex. With mass storage device you also need to read the fat table and account for possibility the firmware file may be fragmented (not written in continuous chain of sectors), so it's more code. With serial communication and your custom programmer, you can control everything and make it more interactive if you want to, but it could cost more (the usb to serial chip is not free)
The "loader" in the microcontroller switches to programming mode and enable serial when that input button is pressed at startup and waits for the programmer to talk to it. It will receive the binary data encoded as HEX or base64 or raw bytes, buffer maybe 128 bytes at a time by filtering the newlines or anything that's not 0..9 A..F if hex is used or 0-9a-zA-Z and some chars if base64 is used, converting 16 bits at a time to 10-12-14 bits the PIC expects...
The loader may parse a header at the start of the hex dump which could contain an encryption key ex AES128 or something easy to do by a microcontroller - see
http://ww1.microchip.com/downloads/en/AppNotes/00821a.pdf as an example- you'll have a private key hardcoded in the bootloader that's obfuscated or made hard to retrieve in some way and the loader can use the private key from internal memory and the public key in the firmware header to decrypt every packet that comes in.
You could write your own programmer, which could for example enumerate all the serial ports and send a "ping" to each serial port and see if the microcontroller responds with some signature your programmer would recognize.
Then your programmer could send data packets to your microcontroller loader like for example a command
INIT/PREP v=major.minor id=[unique key for your program, to prevent wrong firmware upload] key=01ABCDEF... (version of new firmware, decryption key) force=false|true (if true, ignore version and force programming)
then loader responds with READY or some response your programmer would understand or it could refuse if the program ID is wrong, or the version is older than existing version and force is false.
Then your programmer could send packets one at a time, like for example
PROG[size 1-2 bytes][offset/chunk id = 2-4 bytes][crc16/crc32/adler32 - 2-4 bytes][data bytes] , programmer would buffer this in ram, calculate the checksum to make sure it was transferred correctly or not, respond with RETRY/RESEND if not, if all OK decrypt on the fly and program the flash block with those n bytes of data at specified offset, and respond with OK or some message telling your programmer that the particular chunk of firmware was written in the microcontroller memory.
When done, the programmer could send a "RESET" command and your loader would reset the micro.
Could also do the reading for backup purposes like send a command INFO or something to get version (major, minor) , size of code, and then your programmer could send the INIT/PREP command to pass the AES key, then loop through a bunch of READ[size 1-2 bytes][offset/chunk id = 2-4 bytes] and your loader could reply with a message like DATA[size-2 bytes][offset2-4 bytes][data bytes][checksum 2-4 bytes] (checksum at end because it's calculated on the fly as the data is encrypted using the internal key and the key sent using the INIT/PREP command. This way you'd dump the firmware without it being decrypted at any point.
But note that usually it's quite difficult to keep a private key hidden in a bootloader. It's enough for someone well motivated to do some xrays or use acid to remove the black epoxy and read the memory some way to get the raw code.
some more reading :
AN851 : A FLASH Bootloader for PIC16 and PIC18 Devices :
https://ww1.microchip.com/downloads/en/appnotes/00851b.pdfAN1157 : A Serial Bootloader for PIC24F Devices :
https://ww1.microchip.com/downloads/en/Appnotes/01157a.pdfAN1310 : High-Speed Serial Bootloader for PIC16 and PIC18 Devices :
https://ww1.microchip.com/downloads/en/AppNotes/01310a.pdfAN1388 : PIC32 Bootloader
https://ww1.microchip.com/downloads/en/Appnotes/01388B.pdfetc
look up other application notes about programming internal flash memory