valor.charAt(i) retorna um char, cifra deve ser um int. Se for isso, então a expressão (valor.charAt(i) + cifra) será um int, com o cast (char) converte o resultado em char.
exemplo:
String numero = "Numero: ";
char zero = '0';
System.out.println(numero + (int)(zero)); // imprime 48 (numero int do caractere '0')
System.out.println(numero + (zero)); // imprime 0 (o caractere '0')
System.out.println(numero + (zero + 1)); // imprime 49 (numero int do caractere '1')
System.out.println(numero + (char)(zero + 1)); // imprime 1 (o caractere '1')