То, как вы написали оператор ((bool) 1 == 2), всегда будет возвращать true, потому что он всегда будет выполнять код, как показано ниже:
Сначала будет выполнено
(bool)1
и (bool) 1 вернет true.
Теперь, поскольку (bool) 1 верно на втором шаге, ваше утверждение будет похоже на
true ==2
Так как, если мы приведем тип 2 к логическому значению, он вернет true, в конечном состоянии ваше утверждение будет похоже на
true == true
Что, очевидно, вернет истину.
То же самое я объяснил год назад в своем посте Приведение типов PHP .