BOARD_TYPE is simply a number used to identify the type of the board. When you upload a .px4 firmware file to a board, a check is done to ensure that the "board_id" in the .px4 file matches the
BOARD_TYPE of the bootloader that is flashed on that particular board.
When you compile a firmware, the .px4 file is created from a "prototype" JSON file. These are found in the
Firmware/Images/ directory of the Px4/Firmware repo. As an example, here are the contents of the px4fmu-v2.prototype file
"description": "Firmware for the PX4FMUv2 board",
I do not know whether there is any particular format or scheme that is used to assign a type number to a board, or whether it is completely random. Perhaps @dagar might know more about the assigning of board IDs?
Regarding why you might have a problem with your USB timeout, you might need to add the compilation flag for using the STM32F446 chip. I know there are differences between the standard F4 USB peripheral device and the USB peripheral used on the STM32F446. Have a look at the example of adding the extra compilation define for the STM32F469 chip on the PX4_FMU_V4_PRO in the Makefile. You will probably have to add this define for your bootloader as well (but for the STM32F446 instead).
make -f Makefile.f4 TARGET_HW=PX4_FMU_V4_PRO LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@ EXTRAFLAGS=-DSTM32F469
If the extra define doesn't solve your problem, then you will have to dig deeper into the issue to find out what the undelying problem is.