<p>I'm planning to build a USB device that has buttons that some software needs to respond to, and indicators that the software needs to control. I'm new to USB, so I'm looking for any pointers that will get me started.</p>

When I did some USB development a while ago, I found the information at
USB Central
extremely valuable.
For low bandwidth requirements, you can use something like the
FT232R
which is a single-chip USB serial implementation. The FTDI drivers are readily available and make the device appear as a regular serial port to the host computer. This is orders of magnitude easier than rolling your own USB implementation (for either end!).