Как правило, вы можете использовать эти два взаимозаменяемо, но вам нужно знать различия. Например, multiprocessing.Event поддерживается именованным семафором, который чувствителен к платформе в приложении.
Multiprocessing.Lock поддерживается Multiprocessing.SemLock - поэтому ему нужны именованные семафоры. По сути, вы можете использовать их взаимозаменяемо, но использование многопроцессорных блокировок вводит некоторые требования платформы к приложению (а именно, оно не работает на BSD :))