Предикат означает функцию, которая принимает T (любой тип) и возвращает логическое значение.
Predicate<int> isEven = i => i % 2 == 0;
Ты в основном прав. Для bool не так много вариантов использования, которые приходят на ум. Я имею в виду, что с помощью bool можно сделать так много.
Predicate<bool> isFalse = input => !input;
Predicate<bool> isTrue = input => input;
Вы можете использовать это так:
var listOfBools = new List<Bool>() { true, false, false, true, true };
var trues = listOfBools.FindAll(isTrue);
var falses = listOfBools.FindAll(isFalse);
Это, безусловно, менее полезно, просто потому, что с bool вы можете делать так много всего.