A substituição do processo >(thing) será substituída por um nome de arquivo. Este nome de arquivo corresponde a um arquivo que está conectado à entrada padrão do thing dentro da substituição.
O seguinte seria um exemplo melhor de seu uso:
$ sort -o >(cat -n >/tmp/out) ~/.profile
Isso classificaria o arquivo ~/.profile e enviaria a saída para cat -n , que enumeraria as linhas e armazenaria o resultado em /tmp/out .
Então, para responder à sua pergunta: Você obtém essa saída porque echo obtém os dois argumentos 123 e /dev/fd/63 . /dev/fd/63 é o arquivo conectado à entrada padrão do processo cat na substituição do processo.
Modificando seu código de exemplo levemente:
$ echo 101 > >(cat)
Isso produziria apenas 101 na saída padrão (a saída de echo seria redirecionada para o arquivo que serve como entrada para cat e cat produziria o conteúdo desse arquivo na saída padrão ).
Observe também que no cmd1 | cmd2 pipeline, cmd2 pode não estar sendo executado no mesmo shell que cmd1 (dependendo da implementação do shell que você está usando). ksh93 funciona da maneira que você descreve (mesmo shell), enquanto bash cria um subshell para cmd2 (a menos que sua opção lastpipe shell esteja definida e o controle de trabalho não esteja ativo).