I have made many projects that used the FTDI chips, and more recently, skipped those using microchip/AVR devices with USB capability.
There are libraries out there that can be tricky to use but *some* are quite simple. Meaning you can create a new project in your IDE, load in the USB library (used to create a USB-serial bridge, so the PC see's it as a serial port, the micro just see's the data as a 'block of ram') and can make life easier. You can have your own very simple protocol consisting of only a few bytes, or much more complicated, just like any serial application. Although programming the PC for serial port use can get a little hairy especially if you use .NET.
Using USB directly, as in a HID device is a little different, but in some ways easier, especially for higher data transfers, which probably aren't really needed for microcontroller applications (where you're not transferring gigs of data).
The serial port is still going strong, I suspect for the reason you stated - don't have to touch the kernel. PC just reads/writes to/from a virtual serial port.