In a basic 1-2 node environment, colocating the dmgr with the appserver node will work fine. Dependent on your resources of course, cpu and memory.
However I would not recommend having more than one appserver node on the same host, even if it's possible - you quickly run into problems with ports and manageability. And anyway, why have two nodes when you only have one host? Except in development, to test clustering maybe.
For cells larger than a couple of nodes, with several hosts, it would be highly recommended to decouple the dmgr from the appserver nodes, for consistency and scalability. You would want all your appserver hosts to look the same, and not have one of them run the Dmgr.
A Dmgr doesn't require much in in terms of resources, a virtual machine with a couple gigs of ram and maybe 10 gigs of disk would be plenty for small to medium sized cells.