In my opinion, you can install the software on any machine that has enough resources. Typically, you'll have a dedicated database tier for your SQL Server, Oracle, PG etc type databases, but for the ArcGIS Data Store, you can install it on the same machine as any of the other components. Again, the only thing to keep track of are resources on the machine, (RAM, CPU).
How many resources the components and services will use, (aside from disk space), is going to be dependent on the load on the machines. You can publish 10000 hosted services, but if you only have a handful of users, then you won't see an issue. If you have 10 hosted services and significant load on the services, then that's another story.
In my opinion, best practice is to make sure you have enough resources on all machines running the components, which applies to whether you put all components on one machine or all on separate machines or any combination of that. Our cloud builders for AWS and Azure set up two machine sites with Portal, Server, and Data Store on each. Does that mean it's a best practice? Maybe, maybe not, but individual system architects typically end up deciding what their own best practices are, because they have either positive or negative experiences one way or another.