Hello and welcome to the communities.
I'm just wondering if it's better to combine all these apps into one server with a lot of RAM and let the guest OS handle the allocation of system resources to each app, or to give each app a seperate VM with minimal RAM and let ESX schedule the resources.
I prefer the separate VM approach. I think it offers many advantages, and you can let VMware do the scheduling without worrying about it.
Same question applies for the database tier, is it better to have one SQL server and point all your apps to that or have seperate SQL servers for each app?
This can be argued either way. With all DBs in one server, maintenance, patching, etc have much greater impact to users but SQL Server is pretty solid and you can pack a lot of DBs on it without issue. Licensing can/does make a big difference here as well - this is also true for the previous server consolidation question as well. My experience has been that the licensing costs often dictate the answer here.
Of course some apps are meant to be kept on their own VM, such as the domain controller and our exchange setup.
I'm definitely a big fan of letting DCs only be DCs and agree that some things just need to be on their own. Same with vCenter Server on a VM - I like having this isolated, as upgrades are usually complicated enough without having to worry about other apps and how they will be impacted.