Is it worth checking value with select before updating
Well, "13.2.11 UPDATE Syntax" suggests, that no writing is done, when the value doesn't actually change.


  If you set a column to the value it currently has, MySQL notices this and does not update it.


So the extended WHERE clause isn't needed to prevent unnecessary writes.

But you might get a tiny performance benefit from the extended WHERE clause as if not record to update was found, the logic to check, if the row actually needs to be changed won't run. But really, that's tiny.

And the effort for retrieval is there in either way. You can only try to support it with indexes (on id and lock (compound) for the extended version and on id for the other).