A practical difference is in the way that the resulting shell environment reads its initial configuration settings.
/usr/bin/login forks a login shell. I think that it invokes the authentication process, but you may not see any visible authentication interaction if you're already logged in. And, of course, if your login shell is not bash, login will invoke it instead of bash.
bash is a shell that knows whether it was invoked as a login shell or not. A bash login shell reads .bash_profile or .bash_login or .profile -- only one, in that order of preference. A non-login shell will not read a .profile but will read from .bashrc. This is normal bash behavior under modern *nix platforms, but it can lead to difficult to detect weird behaviors if you don't understand what's going on.
For instance, you can open a "login" shell via Terminal, and get one set of environmental variables (say, from your .profile), then type "bash" and get a completely different set of variables (from the .bashrc, plus any variables that were exported, minus those which were not). In particular, PATH can get mangled with repeated or missing entries.
Terminal.app has
usr/bin/login
selected as default shell by default; that's the reason I am asking. – kiamlaluno – 2010-06-29T08:55:38.910Put that way, I don't know the answer. I don't use a Mac myself but I just experimented with the Terminal preferences on my wife's MacBook Pro. The only difference I could see between those two settings, using "ps -fu username", was that selecting bash caused "-q" to be added to the arguments to login. I thought that the shell of a second Terminal would be a descendant of the first login if /usr/bin/login was not the default shell, but I couldn't figure out how to open a second Terminal. – garyjohn – 2010-06-29T16:25:07.527