kamisarlapsha,
1) обратная запись служит во избежания ошибок присваивания, т.е. хотел написать a == 1, а написал a=1. Числу нельзя выполнить присваивание, поэтому при 1 = a возникнет ошибка.
2) intval - выполняет приведение значения к числу, поэтому не возникнет проблем со сравнением в случае, если там будет строка.
kamisarlapsha,
1) возможная ошибка/опечатка в == / =, при такой записи переопределения $attribute_group['attribute_group_id'] не произойдет даже в случае опечатки.
2) в коментах уже написали, в идеале нужно использовать строгое сравнение, тогда неоднозначность передаваемых параметров не вызывает ошибочного приведения типов, в большинстве же случаев явное приведение типов является достаточным.