Alt — это альтернативный (замещающий) текст. Чтобы при отсутствии возможности показать картинку всё равно было понятно, что эта картинка собой представляет. А заодно для индексации самих картинок. Имеет смысл, понятно, только для картинок (для <object>, <embed>, <video> и т.п. такую роль играет текстовое содержимое тега, по уму, для картинок тоже лучше было бы сделать так, но... в далеком 1991-м почему-то не подумали). Titile — именно что подсказка при наведении (тултип). Может быть у любого визуального элемента (поэтому в html5 входит в перечень глобальных атрибутов, совместимость там, AFAIK, ни при чем), но имеет смысл только для пользователей с мышкой, поэтому не стоит привязывать к нему что-либо значимое. Для поисковиков, насколько я в курсе, тоже имеет минимальную значимость. Общего у этих двух атрибутов — только то, что древние IE с какого-то перепоя показывали содержимое alt как подсказку (при отсутствии title), и некоторые др. браузеры какое-то время за ним повторяли. Firefox, AFAIK, никогда таким не страдал, новый Хром вроде тоже по этой части тёплое с мягким не путает...