To get all this right you need to know a little history/what else you can do with Linux (nix in general)
At first they didn't have 1 computer/person, unix actually started as a nice way to share one computer among many users. A timesharing system. What happens is everyone can log on remotely using dumb terminals. agetty provides this capacity. Now.. when you log on to your own computer, it's as if you were logging on to a computer remotely except all connections are either redirected in a really fancy way or they use the loopback device (localhost).
When you have a non-graphical logon (a real logon
) login takes care of the authentication. agetty handles keyboard and outputting things to the screen.
A tty is the correct way of calling the text screen. The virtual ones made in things like Kconsole are called ptses.
Those columns that sometimes have a tty or a pts or a ? simply mean to were the process is attached to. Were it will send info to the screen and so on.