Locking is an access control mechanism. Whereby i mean you lock a resource when you want an exclusive access to it. Lock the door, use the room/do whatever you wish, now unlock the room for others, so that they can use it now. While the room is locked, no one else could have entered the room, thus could not have done anything.
Blocking is used for guaranteed data-retrieval, that unless you dont have data, dont come back. Keep waiting at the door/pipe/socket(basically anything) and when data is available get it and come back.
Addition--
Do not get confused by the literal english-meaning of the words, as they both can be used interchange-ably in the context you try to put them in. For example -- locking is like blocking for others to use the same resource, and blocking can be locking yourself(calling function) to the resource until data is available.
So LOCKING simply mean you capturing a resource for a specified amount time(unless you un-block it).
And, BLOCKING is you are blocked, which means you cannot proceed further as you do not have data, to proceed or go ahead.
The way they are implemented, by changing the states of the process, and waiting for the interrupt or event to occur.