Roads in the Shenandoah Valley, during the Civil War
Source: Library of Congress - Vicinity of Winchester and Harper's Ferry, Va..
Winchester, Harrisonburg, and Staunton developed initially as the sites selected for county seats, the administrative centers for government in the Shenandoah Vallley. They simultaneously served as the "central places" with specialized services to support the local farming community, plus the transportation of people and agricultural products from the valley to Baltimore and Philadelphia. Further south, Salem and Bristol also supported travelers as well as local farmers.
Look at US 250 on the map of Virginia, from the West Virginia border to Richmond. You don't need to be an "A" student to see that the small communities of Monterey in Highland County, Zion Cross Roads in Fluvanna County, and Gum Spring in Goochland County might owe their existence to being at the intersection of two roads. The harder question is - why didn't these communities grow into a city as large as Staunton or Charlottesville?
Or follow US 29 north from the North Carolina border. Between Danville and Lynchburg are the small communities of Chatham in Pittsylvania County and Altavista (on the Roanoke/Staunton River) in Campbell County. These communities are on a major road - but clearly, not every community is destined to grow into an urban center.
Even the communities settled first by Europeans in colonial Virginia did not always develop into large cities. Flowerdew Hundred is a private farm, and Martin's Hundred is a field in front of a private house (after a brief period of ownership by Colonial Williamsburg). On the Eastern Shore, the tip known as Cape Charles is a wildlife refuge. Cape Henry is within the boundaries of a military reservation, Fort Story. Jamestown is the opposite of a booming metropolis. Today, its ruins are preserved as a cultural park by the National Park Service and a non-government organization, the Association for the Preservation of Virginia Antiquities (APVA).