If you try to use the standard update method, it was build for things like user profiles, and it requires the current user password to make sure the data is not tampered with. This is mentioned in the docs.
If you want to update in code, use the included User model and standard ORM calls.
Not if you create accounts using create_user(). It will check for both duplicate email and duplicate username, and will throw an exception if you have a collision.