С точки зрения безопасности (как человек в середине атаки) Я думаю, что он должен возвращать false все время.
Почти правильно. Этот метод вызывается только в том случае, если проверка по умолчанию обнаруживает проблему. Почти во всех случаях такая проблема означает, что соединение должно быть прервано, чтобы сохранить его в безопасности.
Однако, просматривая интернет в большинстве случаев, я сталкиваюсь с решениями, которые возвращают «истинное» значение (безлюбая работа над аргументами).
Это неправильно почти каждый раз. Авторы такого кода обычно не понимают последствий (возможно, MITM, как вы правильно сказали) и просто хотят, чтобы их код работал как-то. Да, он будет работать, но он также будет работать, когда не должен, то есть небезопасен.
Типичные причины сбоя проверки по умолчанию состоят в том, что сервер неправильно настроен с неверным сертификатом или к серверу обращаютсяс неправильным именем хоста (т.е. не тем, что в сертификате).
Так что меня смущает, когда, почему и как я должен его использовать.
Вы должны использоватьэто только в том случае, если вы знаете, что хост возвращает сертификат с неверным субъектом, но вы также знаете, что именно будет неправильно, и правильно проверит это ожидание в вашей реализации.
Конечно, гораздо лучше обходить не все приложения, обращающиеся к серверу, а вместо этого решить реальную проблему. В зависимости от реальной причины проблемы это обычно означает либо исправление сертификата на сервере, либо исправление имени хоста, используемого для доступа к серверу.