A) Ou remove o cast desnecessário para String ou faz o cast para o retorno e não para a condição: String x = (String) ((b > c) ? "true" : "false");
B) Correto. Tanto faz "String args[]" ou "String... args". Essa reticência é chamado Varargs e pode ser usado desde java 5
C) O compilador pega as entidade A, B e C e as transformam em subclasses de letra. Se fosse permitido que a enum fosse final, não seria possível fazer com que essas subclasses estendessem letra.
D) String é a única classe wrapper do Java que possui construtor vazio. Para Boolean, tem que passar um boolean ou uma String pelo construtor, sendo que qualquer String diferente de "true" é considerado false, incluindo "1".