Opción A es incorrecta: En ningún momento los caracteres son convertidos a números. Por esta razón el resultado es una concatenación de string o caracteres. Opción B es incorrecta: En este caso, primero se concatenas los caracteres ingresados por el usuario y luego es convertido a número. Lo que da un resultado numérico pero de una concatenación antes de ser convertidos. Opción D es incorrecta: En este caso está mal codificado. Lo correcto es, primero debería estar el prompt para solicitar la información al cliente y luego convertir a número. Hay otras alternativas también de resolver el problema, donde antes de ser calculado, cada variable se convierte a número y luego se hace el cálculo. Este sería el ejemplo
var invitados = prompt("Número de invitados");
var vips = prompt("Número de invitados VIP's");
var total = parseInt(invitados) + parseInt(vips);
imprimir("El total de invitados es " + total);