visual basic usb
Well, it pretty much depends if you want to do it the hard way or the easy way. The easiest way is to use the FTDI chips, no protocol knowledge needed and a virtual COM port driver is provided. For real USB devices, easiest way is to go for the HID class. Firmware required but driver programming not required, or minimal. Downside is that transfer rates are limited to 0.5 Mbps, i think. If you need a custom USB device, you will also need to have a USB function driver. For windows, this would entail DDK programming in win32 C. It all depends on how much you are willing to commit.
BTW, you do need a USB Node Controller on the device side, unless you are using FTDI chips. Popular USB microcontrollers include cypress ones and some microchip OTP microcontrollers. Or you may opt for stand-alone node controllers. The more common choices are the National USBN9603/4 and the Philip's PDIUSBD11/2 series.