There are no hard rules you can follow as they will be different in every enviroment.
Topology is based on your requirements. Technet some diagrams for some basic deploment methodologies:
http://technet.microsoft.com/en-us/library/cc263199.aspx
You need to determine your fault tolerance requirements in combination with your performance requirements to really determine the optimum configurations.
Some Variables affecting performance:
Bandwidth
CPU
Memmory
Cache
Proxies
Services utilized in farm
Web Apps
App Pools
There are some guidlines in the capacity guides http://technet.microsoft.com/en-us/library/ff608068.aspx , but they are just to get you started. MS may say 10000 users per WFE with 16GB Ram, but that may be lower if you increase your cache sizes and consume more memmory, or higher if you add more RAM, or minimze the services you are using. From a performance standpoint you will really need to do some testing.
The SharePoint Administration toolkit has visual studio module you can use for load testing.
http://technet.microsoft.com/en-us/library/cc508851.aspx
Run that and monitor the counters here and you will start to get to the numbers you can rely on.
http://technet.microsoft.com/en-us/library/ff758658.aspx
The good thing about SharePoint is it is very scalable. If you notice your WFE's are overloaded, spin antoher one up and add it to the farm (assuming load balanced), same for any of the services, if Search is not accetable, determine the bottle neck and add query, crawl, or even dedicated db servers.