Chosing microcontroller for a sensing project
You're asking for a whole lot.

I suggest that "USB" can mean a whole bunch of different things.  I recommend avoiding creating a USB stack like the plague, until you know what you're doing.  Many development boards contain a serial-port to USB serial device built in.  When you plug it in to your host computer, it gets recognized as a serial port, and you can talk to it using any programming that can talk with a serial port.  From the microcontroller end, you just use  UART communication techniques, which are a whole bunch simpler than using USB tools.

My recommendation would be to get a developers board with this built in.  In fact, the whole Arduino family would suit your needs well.  You don't need any hardware to program the board -- it's built right in.