i always try to put as little as possible on the server running the control panel.
it's just personal preference, but it just makes it so much easier to deal with if something does go wrong.
plus you don't want anything else slowing down the control panel when your trying to make critical changes.
at least if you're hosting wordpress sites, always put the application and db roles on the same server.
i've tried keeping them on separate servers before, but even with powerful servers and a high speed, low latency network between them, the difference in speed when serving the website was very noticeable.
if you're hosting dns yourself, always have one dns server in a different, geographically distant datacentre. definitely
don't want to risk all your dns servers being unavailable at the same time.
backup role, also ideally, geographically separated from the websites, and with at least one replication with another datacentre provider. if the backup is on the same server the website is on, it's not really a backup.
same if it's all with the same hosting/datacentre provider.. if they suddenly shutdown, decide to close your account without warning, etc, then you can't access your backup to rebuild elsewhere.