Все эти операторы делают то же самое - они создают нового пользователя без каких-либо привилегий.
Первый и второй делают это с помощью оператора GRANT, где USAGE означает - НЕТ ПРИВИЛЕГИЙ.
Но между операторами GRANT + USAGE и CREATE USER есть разница:
grant usage on *.* to 'username1'@'localhost'; -- when password is not specified
выдаст ошибку в случае режима sql NO_AUTO_CREATE_USER.
Из справки - NO_AUTO_CREATE_USER Запретить GRANT автоматическое создание новых пользователей, если в противном случае это будет сделано, если только не указан непустой пароль.
Вы правы в отношении операторов GRANT и CREATE USER, когда пользователь существует; CREATE USER выдаст ошибку, но в этом случае, если вы хотите изменить пароль, вы можете использовать оператор SET PASSWORD , например, -
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new password');