It is good practice to install
multiple server roles in one machine?
Yes, you can mix roles, (e.g. Domain Controller and Certificate Authority are two that are often mixed). For some you HAVE to mix. For example, there's no point in installing the Network Load Balancing role without installing something else (say, SQL or IIS)
If the answer is yes, what server
roles can I mix?
There is no definitive list, but Small Business Server mixes almost ALL the roles into the one server. This may not be recommended for your deployment, but it proves that almost all of them can be mixed.
There are some server roles that
cannot be mixed, if so, which ones?
There are some that you shouldn't mix, such as Exchange and Domain Controller.
For the server roles that cannot be mixed. Should I virtualize em
(Hyper-V Server 2008 R2) or have them
in their own machine?
Virtualising is great in this regards. If you have Sever 2008 then you already have Hyper-V, and if are running Enterprise then you're entitled to 4 virtual instances. If you don't use them, they're going to waste. But there is an overhead, so you better make sure your hardware is up to it (especially with RAM).
I'm thinking in buying MS Forefront
Treat Management 2010 and MS Exchange
2010 Standard. Should I virtualize
them or have em in their own machine?
TMG should be physical, but there's nothign to stop you from making it virtual if your gateway is ethernet based (i.e. you don't need any special hardware, as passing through hardware is impossible in Hyper-V).
Regarding exchange, it most definately can be virtualised, but whether or not you should virtualise it depends greatly on your number of expected users and the kind of hardware you have.