Doing some research into SharePoint 2013 Topologies for a client and I ran across these two Microsoft documents that lay everything out including how to span the virtual machines across your hosts. Great resources to say the least. First the Traditional Sharepoint Model can be looked at to see how to create a farm for almost every eventuality. It uses the standard three-tiered approach to topology design with Web Front End, Application, and Database servers as the base for design. As an example the smallest farm that is model details is six severs (2 WFEs, 2 App, 2 SQL). It then goes up from there.
The Streamlined SharePoint Model approaches the problem in a slightly different manner. It breaks out the farm hardware into three roles, Front End, Batch Processing, and Database. This is an important distinction because some of the Service Applications (such as Managed Metadata or Access Services) are really front-end user requests and thus they should live on servers that are optimized to reduce latency. Other tasks, such as Index, User Profile Services, and Workflow are really not tied closely to user requests and thus should live on servers that are optimized for high CPU load in busts as needed. This type of design can increase farm performance by splitting services onto the type of server best suited for the type of job it is doing.
The Streamlines Model has a description of Microsoft Office Divisions SharePoint 2013 Farm
This farm is designed to handle 15,000 users, with about 1 Million documents in 1.3TB of content (10 content DBs) with 99.9% uptime.