Duel of the ages!
1. Bash
Probably also applicable to zsh.
1.1. Process substitution
When you write “<(…)” or “>(…)”, think of it as executing whatever's inside and replacing them with paths to files representing the stdout and stdin of the executed process, respectively:
$ ls <(foo) # Becomes ls /proc/53722/fd/11 /proc/53722/fd/11
Allows the construction of non-linear pipelines. Also useful when a program expects a file instead of working with stdin/stdout. Some practical (?) examples:
diff <(ls /dev) <(sleep 3; ls /dev)
example > >(less) 2> >(tee errors.txt)
tar cf - directory | tee >(ssh giraffe tar xf -) >(ssh 192.168.1.7 tar xf -) > /dev/null
2. Rc
2.1. Process substitution
See Process substitution of Bash, but with braces instead of parentheses.