In Linux, you can use the udevudev system to assign unique identifiers to USB devices based on various criteria such as the device's vendor and product IDs, its serial number, or its physical location on the system's USB bus. This allows you to uniquely identify devices even if they have the same USB ID.
To find the MAC address of a wireless network adapter, you can use the ipip or ifconfigifconfig command. However, as you have noted, the MAC address may change depending on the network to which the device is connected. This is because some wireless adapters use randomized MAC addresses for privacy reasons.
Bluetooth devices also have unique identifiers called Bluetooth device addresses (BD_ADDRsBD_ADDRs), which are similar to MAC addresses. You can use the hcitool or bluetoothctl command to view the BD_ADDRBD_ADDR of a Bluetooth device.
Regarding the USB standard, it does specify a unique serial number for USB devices, but not all devices have one. If a device does have a serial number, you can use it to uniquely identify the device. However, if the device doesn't have a serial number, you can still use other criteria such as the vendor and product IDs to differentiate it from other devices with the same USB ID.