Can someone explain this property of the at and the tty command?

It seems to me that they both do the same thing, save for how input and output is handled.

One of the properties of the "at" command is that it launches in a separate tty, this input and output from the tty you type from is ignored. The addition of the redirects forces the at command to read from the specified tty (by redirecting in input and redirecting out stdout and stderr).

To further clarify

$(tty)

Means "run the command tty and make the result part of the command line". tty identifies the terminal of your screen.

< $(tty) 

Is an instruction to pipe input from whatever device $(tty) is. Likewise

> $(tty) 2>($tty)

Output the results of stderr (the first part), and stderr (2>) to your current terminal.

Thus the command is communicating with your terminal even though asynchronously launched - assuming $(tty) resolves to your current terminal. (You can check the value of your current terminal with the command "echo tty"