Como os termos são mais comumente usados, um emulador é qualquer aplicativo que executa código projetado para uma plataforma em outra plataforma.
Uma máquina virtual é um caso especial de um emulador, em que é executado código projetado para uma plataforma em um ambiente virtualizado na mesma plataforma - por exemplo, softwares como o VMWare e VirtualBox executa código projetado para um PC x86 em um PC x86 - isso torna possível executar um sistema operacional em cima de outro, entre outras coisas.
A diferença entre emulação e virtualização é que, com a emulação, todo o ambiente operacional é simulado em software, enquanto que, com a virtualização, parte do trabalho a ser feito é passada diretamente para a CPU do host. A maioria dos processadores x86 modernos tem hardware para acelerar essa função. Isso torna a virtualização muito rápida em comparação com os emuladores que precisam agir em resposta a cada operação realizada pelo software convidado.
Um popular emulador de PC é Bochs . Como ele emula o hardware x86 com bastante precisão (às custas da velocidade), ele pode ser muito útil para depuração no nível do SO.