If I change the hardware/chipset of a USB product, should I change idProduct or bcdDevice?
Change bcdDevice only, idProduct is for a new product but bcdDevice id is for the version number for USB device.

This will work any OS incl. Windows XP or latest, and any Linux based OS.

Linux kernel have this prop. and you can find this out by this link:

http://lkml.indiana.edu/hypermail/linux/kernel/1205.0/02259.html