A rule of thumb: The agent who actually works on the ticket is the owner, responsible is his/her proxy. Responsible has no more rights than the owner. Responsible function can be useful when tickets have to be handled by more than one agent, for example an agent cannot handle a ticket due to some emergency. Responsible gets notifications that usually are sent to owner and can respond to the situation.
In most cases owner function is sufficient. If for some reason an agent cannot handle his/her ticket, other users with rw rights to the queue can assign the ticket to themselves/other agents and process them.
To the first part of your second question: The lock function locks the ticket
![Very Happy :D](./images/smilies/icon_biggrin.gif)
This prevents for example that more than one agent works on the same ticket at the same time. Imagine a situation where a new ticket arrives in a queue. Agent A and agent B both write an answer at the same time. Such a situation would be undesirable. Lock prevents such conflicts.
For the second part: All users who have the 'owner' permissions to a queue (see Agent <-> Groups in admin area) can change the owner of tickets in the queue(s) of the group. If you have rw permissions to a ticket, you could theoretically close the ticket without owner's permission
OTRS 3.3.x (private/testing) on Windows Server 2008 with MSSQL database.
OTRS 3.3.x (private/testing) on CentOS with MySQL database and apache