I, too have lived in all 3 cities and I'm pretty sure the size goes like: Norfolk, Richmond..............................................Charlottesville.
Main differences are pretty accurate above, but I'll elaborate.
Charlottesville is relatively small, and aside from the university, there isn't much there as far as people. That being said, for such a small city, there's a lot to do. And it's kinda nice because everything is in walking or cycling distance so there's little need for a car unless you're leaving the city, or unless you need to go to Walmart or Target which for some reason are like 15-20 miles away lol. Definitely the LEAST diverse of the 3. Very stratified, as far as race & SES. Lots of outdoorsy stuff, hiking, cycling, wineries, etc.
Richmond is full of history, and also a lot to do. Very hipster, but Cville can be, too. Probably most diverse out of the 3 cities, but Norfolk has its share as well. Richmond has some bad areas, but most of those areas have been gentrified in the past 10 years. So if you like gentrification (and hipsters), Richmond is the place.
Norfolk is the most urban area, but has some pretty nice parts (like Ghent/EVMS and ODU area). It also has some pretty rough parts. Of the 3, I actually prefer Norfolk because I like water. VA Beach is not far, and there's six other cities within ~30 miles so if you can't find fun stuff in Norfolk, drive to VA Beach, Chesapeake, Hampton, etc. and bound to find some activities.