Когда мы должны использовать Query, а когда Body в HTTP?
Сама концепция REST настолько размыта, что стандартного ответа на ваш вопрос нету. То что вы используйте и видите это чаще всего не REST в том академическом плане в каком он  был создал.

Вот хорошее мнение на этот счет. Но я ни где не находил его подтверждения.
https://habr.com/ru/company/yandex/blog/265569/
На самом деле все предельно просто.

URL является частным случаем URI, который в свою очередь расшифровывается как "Uniform Resource Identifier". То есть это в первую очередь идентификатор ресурса. По нему мы находим ресурс, обращаемся к ресурсу, отличаем его от других ресурсов. 

Query же, это такая же часть URI, как и host или path, и так же принимает участие в идентификации ресурса.

В Body же как раз содержатся данные, отправляемые ресурсу на обработку. Потому в GET запросах и нет тела, так как запрашивая данные ты не отправляешь никаких данных на обработку, но тебе нужно четко идентифицировать тот ресурс, от которого ты хочешь эти данные получить. А идентифицируешь ты его при помощи url, в том числе query, если нужно.

PATCH /user или PUT /user/password значения не имеет, но обычно разработчикам день программировать новые эндпоинты, поэтому используют более общий PATCH /user.

Коллекция - это некое множество объектов, поэтому логично что множество описывается в множественном числе.

Можно ли использовать глаголы? Ну смотря о чем вы говорите, о HTTP или о REST. В HTTP вы можете использовать глаголы, прилагательные, местоимения, причастия, предлоги и вообще любой набор символов в любой последовательности. В то время как REST - это парадигма работы с представлениями объектов. А объект глаголом быть не может.