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.