Este é um comportamento perfeitamente normal.
O que acontece é que o shell (sh, bash, csh, ksh, o que for) lê primeiro a linha de comando inteira.
Em seguida, constrói os processos, pipes e arquivos de redirecionamento na direita para a ordem esquerda e só então executa os comandos reais.
Portanto, o arquivo de redirecionamento (temp) é criado ANTES que o comando ls seja executado.
Tem que ser, porque o identificador de arquivo associado a "temp" precisa estar disponível para ser usado como destino para a saída do wc, antes que o wc seja realmente iniciado.
O comando wc, por sua vez, precisa ser configurado, antes que a saída de ls possa ser anexada ao filehandle que será a entrada para o wc.
Embora pareça um pouco não-lógico a princípio, isso faz muito sentido quando você entende como as shells constroem sua sequência de comandos.