В чем разница перегрузки функции и перегрузки операции?
Нет разницы.
Операторы частный случай функции, только со строго заданными и описанными в стандарте сигнатурами и со специфическим ключевым словом operator. Ну и разница в использовании - вызовы операторов, как правило, компилятор подставляет в код сам, а функции явно вызывает программист. С точки зрения именно перегрузки разницы нет.
UPD: дополнительно смотри комментарий Евгений Шатунов
Второго определения не существует.