1) yes, and there are multiple ways. To start any program after the other bootup scripts one usually adds a corresponding line to /etc/rc.local (the file rc.local may be in a different location depending on the distribution, for example in /etc/init.d/rc.local). Some distributions may use a different name for that, but often I see it called rc.local (it's anyway where the other initscripts are, and is run as the last one of them). That affects the whole system and doesn't have to wait for somebody to log on to the desktop environment (KDE, Gnome, ...) for example. To achieve a situation where some program is loaded after a user logs in (but only for that user), you use the desktop environment's settings: either there is a tool in the system menu, or a setting in "control center" or equivalent, that lets you do that (I suspect it's in KDE's Control Center or in System-menu > Settings > Sessions in Gnome, or equivalent). Usually desktop environments also use somekind of profile file that is read when started, that you can alter; profile files are often under your home directory, under the desktop environment's own directory or so. For example to control what happens after you log on and start using a shell, for example bash here, a file .bashrc (or .bash_profile) is read from your home directory.
2) That's again something your login manager
does. Often it's KDM (for KDE) or GDM (for Gnome) or XDM or something. I suspect GDM is often used because at the moment it's easier to "tune" so distros that want to look good take it
so, open GDM settings dialog and there you can select a user that is logged in (without password) by default. GDM settings dialog is found from your desktop's system menus, or by running
as root. For KDM (and others) there are probably equivalent tools, that in some cases can be accessed from within the login manager before logging in (needs root privileges).