I understand that the right way to delete until the end of line is d$, but why does dt$ not work also?
t takes a character, so it looking for a literal
$ character, not a motion like end of line
t (and its variants
F) take a single character afterwards to denote the target of motion within the line.
So the effects of the two commands are:
d$- delete to end of current line
dt$- delete up-to-but-not-including a literal $ on the current line