CREATE USER fails when I'm trying to replicate the SQL required to create a user with privileges, if I use HeidiSQL GUI interface to create a USER and set the privileges it works, then I delete the user from the User manager in HeidiSQL and copy SQL from echoed response area at the bottom of HeidiSQL:
CREATE USER 'simon'@'localhost' IDENTIFIED BY 'password';

Just the above, nothing more, but it fails with a dialog containing:
SQL Error (1396): Operation CREATE USER failed for 'simon'@'localhost'
You may need to perform a FLUSH PRIVILEGES; before trying to create an account that was recently removed. This is the result of a very old bug in MySQL server. By flushing the privileges the system will properly “forget” that simon@localhost existed.