Anexei bastante à minha resposta abaixo, mas mantive a resposta original intacta para referência.
TL: DR: Máquinas Virtuais são uma ferramenta e, embora ofereçam a capacidade fácil de usar um sistema operacional dentro de outro, você deve estar muito ciente de qual será o uso primário pretendido do computador para fazer pleno uso do sistema .
Sua pergunta parece ser fortemente inclinada para as possibilidades gráficas e de desempenho da interface do uso de uma máquina virtual; portanto, responderei sobre as possibilidades existentes.
O principal problema é que, para gerenciar com segurança o acesso dos sistemas operacionais convidados aos dispositivos (e, assim, impedir que o SO convidado atropele o host e quebre coisas), todos os dispositivos que você deseja usar devem ser "emulados".
O que isso significa é que a placa gráfica que o SO convidado pode ver não é a mesma que o SO host pode ver. Você pode habilitar recursos como a renderização 3D no convidado, mas isso é tratado por um driver intermediário no seu convidado que passa as solicitações até o host de uma maneira segura para que o 3D seja renderizado lá.
É muito duvidoso que recursos como os necessários para reproduzir discos blue-ray com segurança em um monitor HDMI suportado sejam emulados pelos drivers da placa gráfica de convidado e, portanto, isso provavelmente não funcione.
Basicamente, qualquer coisa que exija suporte de hardware no seu host provavelmente não funcionará bem, se houver, no seu convidado. Não sei como o WiDi funciona, mas se precisar de acesso direto à memória da placa de vídeo para compartilhá-lo na televisão, ele não funcionará, a menos que você o use no sistema operacional host (Linux).
Fora isso em termos de desempenho, uma VM pode se aproximar do que seria se fosse o sistema operacional principal, mas sempre haverá penalidades em termos de acesso ao dispositivo de disco rígido ou contenção com outros recursos que o host está usando.
No início...
No começo, tínhamos um computador, esse computador só podia executar um sistema operacional. Esse sistema operacional tendia apenas a funcionar bem no processador específico e em outro hardware que estava na máquina, com outros sistemas operacionais capazes de executar apenas mal, se é que existe, no hardware nativo disponível.
Para que as pessoas possam usar o software para uma plataforma específica em outra plataforma (por exemplo, usar o software MacOS Pre-OSX em um Commodore Amiga), é necessário mais do que apenas "instalar o software". Essas duas máquinas usavam arquiteturas de processador completamente diferentes e hardware auxiliar. Simplesmente não havia como um sistema operacional rodar no hardware de outra máquina.
Emulação
A emulação é como um primo da virtualização, eles estão realmente relacionados e têm objetivos semelhantes. Um gerou o outro por assim dizer.
O que essas plataformas de hardware diferentes significavam era que, se você queria usar um software de outro sistema operacional em sua máquina, tudo sobre essa máquina tinha que ser analisado para descobrir como funcionava e, em seguida, um código escrito que funcionava no da mesma forma que a parte do hardware. Isso tinha que ser feito para cada peça, o processador, o controlador gráfico, o controlador de memória, tudo .
Então todas essas peças são reunidas e, à medida que cada peça emula um pouco de hardware, chamamos isso de máquina emulada . Em seguida, executamos um sistema operacional em cima dessa máquina emulada.
O problema é que essa abordagem é lenta. Simplesmente, você teve sorte se conseguir atingir 1/10 da velocidade do hardware original. Você literalmente precisava de uma máquina várias vezes mais rápido que a máquina emulada de destino para executar o computador emulado a qualquer lugar próximo da velocidade máxima.
Então o que mudou?
Bem, aqui está a coisa legal. Na verdade, não muito. A única grande mudança foi a padronização das plataformas de hardware. Paramos de obter hardware personalizado para todos os sistemas operacionais e todos os sistemas operacionais foram movidos ou criados em uma única plataforma padrão.
Os componentes que compõem um Mac atualmente são, em geral, os mesmos componentes que compõem um PC. O Linux sempre rodava no hardware do PC, então nada de novo por lá.
Por um bom tempo, a emulação ainda era a norma, se você quisesse executar o software de um sistema operacional em outro. Ou você pode inicializar duas vezes e executar o sistema operacional conforme desejado, mas isso torna doloroso e irritante se você quiser passar da codificação no Linux para jogar no Windows.
E depois..
Surgiu a ideia de que, como o hardware subjacente é o mesmo, por que os dois sistemas operacionais não podem compartilhá-lo?
Acabamos com QEMU e WiNE e soluções de software similares. O QEMU era um dos favoritos para a emulação rígida de máquinas, enquanto o WiNE permitia que os aplicativos Windows rodassem no Linux interceptando e corrigindo suas chamadas à API do SO e permitindo que o código fosse executado nativamente no processador.
O QEMU fez algo semelhante ao WiNE, mas fez em um nível muito mais baixo. Ainda é efetivamente um emulador, mas para cada chamada de hardware feita, eles usam um método de "correção e redirecionamento" para que todas as chamadas sejam direcionadas para sua própria plataforma de hardware emulada. porque a maioria dos códigos de trabalho em um programa não envolvia realmente chamadas de hardware (a maioria é simples fluxos de cálculos com uma chamada no final para exibir resultados).
Isso resultou em um aumento instantâneo de velocidade para quase todos os programas na máquina agora não-emulada . Os programas rodavam com lentidões, dependendo mais de quanto eles acessavam o hardware "virtual", e não de quão bem a máquina poderia ser emulada. Em vez de rodar em 1/10 da velocidade, eles estavam rodando quase na mesma velocidade como se estivessem nativamente.
Então, se estamos rodando no processador agora, por que minha placa gráfica não funciona?
O único problema com essas novas máquinas virtuais é que, por sua própria natureza, um sistema operacional pressupõe que ele tenha controle direto de todo o hardware existente no computador, para que eles possam fornecer recursos como gerenciamento de memória e controlar o acesso ao hardware.
O que isso significa, porém, é que as Máquinas Virtuais não conseguem se livrar completamente da emulação, pelo menos no método. Eles ainda precisam emular determinadas funções no software, por exemplo, uma placa de vídeo ou placa de rede deve ser apresentada ao sistema operacional em execução na máquina virtual para que o sistema operacional "Convidado" pense que tem controle total desse hardware. O sistema operacional principal (por requisitos de segurança) deve se proteger contra programas que acessam diretamente o hardware e isso impõe restrições ao sistema operacional convidado.
Para fazer isso, eles precisam emular peças de hardware "virtuais" para tudo no computador. Todo o código é executado nativamente pelo processador agora, portanto, não é lento, mas cada uma dessas peças de hardware virtual deve ser escrita em software, e isso gera uma pequena penalidade no desempenho e potencialmente uma grande penalidade em termos de funcionalidade .
O que isso significa é que sua placa de vídeo virtual não pode e não terá os mesmos recursos que sua placa de vídeo real . Para obter o máximo desempenho, o hardware virtual pode ser gravado para suportar os recursos mais usados, e a renderização 3D agora é possível em uma máquina virtual, mas ainda não é a mesma coisa que o hardware real.
O que isso significa é que o sistema operacional host obtém as melhores opções de hardware, enquanto o sistema operacional convidado obtém opções genéricas de hardware.
Uma máquina virtual não é tão boa quanto o hardware real; é apenas uma ferramenta para facilitar o trabalho com as ferramentas de um sistema em outro.
Então o que eu faço?
Você precisa escolher qual o objetivo principal do seu computador.
Se você deseja jogar os jogos mais recentes em sua placa de vídeo de alta potência e usar a mesma potência de placas gráficas para reproduzir filmes em 1080p completos na sua TV HDMI de 400 ", mas ocasionalmente deseja fazer alguma programação em Linux, o Windows pode ser sua melhor aposta com o Linux como convidado.
Se você deseja trabalhar no kernel Linux, criar drivers de hardware para dispositivos no seu computador e, ocasionalmente, escrever algum software para Windows e testá-lo em uma boa aproximação de um sistema Windows "padrão", pode ser que você seja o melhor em Linux como host e Windows como convidado.
Se você gosta da facilidade de uso de um Mac, mas deseja programar para Windows (ou se deseja um pacote de software que seja apenas para Windows), também é uma opção.
Não estou dizendo que o Linux não pode jogar ou que o MacOS não é para programadores, pois isso seria simplesmente um monte de mentiras. É que a única pessoa que pode dizer qual sistema operacional pode ser mais adequado ao que você quer fazer é você .
Você realmente precisa entender o que deseja que sua máquina faça primeiro . Somente então você poderá descobrir o que uma máquina virtual pode fazer por você.
Para responder suas perguntas:
Will the graphics and video rendering quality will be just as good?
Não. A placa gráfica emulada pode fornecer alguns recursos da placa gráfica host, mas provavelmente não suporta recursos complexos, como aceleração de vídeo por hardware ou recursos de programação CUDA.
Will there be any hardware issue such as using HDMI or WiDi?
Novamente, esses recursos extras provavelmente não serão um recurso de qualquer hardware emulado / virtual disponível.
Will applications run just as smoothly as long as enough RAM is allocated?
A maioria dos aplicativos (desde que não exijam recursos específicos de hardware) será executada quase tão rapidamente quanto no hardware real, desde que você não morra de fome nem com o host nem com o convidado da memória.