In shells `exec` does 1) file openings and redirections 2) actual `exec`ing (replacing the current process image with another process image). These `exec`s are redirections. First you redirect (`exec 1> >(tee $LOGFILE)`) the stdout descriptor (1) to a process substitution-generated pipe connected to a concurrently run tee process that has `$LOGFILE` as its first argument and then you redirect the stderr descriptor (2) to the same place as where 1 points. Keeping in mind that filedescriptors get inherited, you've just made all stdout and stderr output go to `tee` which writes it to `$LOGFILE` and wherever filedescriptor 1 pointed to originally.