How to lock a piece of content form being edited by specific roles?
I've not used it, but the Content Lock module might fit your needs!

EDIT AFTER COMMENT

What you could do then is utilise Taxonomy Access Control using the following method:

1) Add a Taxonomy vocabulary called "Locked" (or something like that)

2) Add two terms to that vocabulary - Locked and Unlocked

3) Set the permissions for authenticated users to be able to add/edit the content, but do not allow them to set the taxonomy terms.

4) Set the permissions using TAC so that if a node has the term of Unlocked, it is still editable, but as soon as that term gets changed to Locked, then authenticated users cannot edit that node.

5) Once the content has been submitted and approved, the user with the Editor or Admin role sets the term on the node to Locked.   This will prevent the user from being able to access the edit page for the node.

It sounds much more complicated than it really is.  You'll see what I mean when you get to the settings page for TAC.