They are two different distributed data structures. Lock is the distributed implementation of `java.util.concurrent.locks.Lock` and Map is distributed form of `java.util.Map`.
When you use Lock, it will be executed by a single thread in the entire cluster. IMap.lock() put locks on specific entry so it is not behaving like ILock.
Q1- I believe being and partitioned or non-partitioned are different concepts. IMap.lock prevents concurrent threads to operate on the locked entry in the same member at the same time.
Q2- A backup owner does not have IMap.locks but if the primary owner fails then it will get promoted to the primary owner and the caller client which has acquired the lock will switch to the new primary owner.
Hope that helps.