Как ведут себя логические операторы в сложных ситуациях?
Это не совсем логические операторы.
Это побитовые операторы, и операции они проводят над битами.
Например (в двоичной системе)
100 | 001 = 101
100 & 111 = 100
110 ^ 011 = 101

А про то, почему именно такой результат при работе с отрицательными числами - это тебе дз
Console.WriteLine(-2 & -3);         // -4
Это всё булева логика, представь числа в двоичном представлении, примени операцию для каждого бита и всё станет понятней.
Но |= , &= - что они делают?
Если ты понимаешь, что происходит с +=, то почему возникает вопрос с этими, меняется ведь только операция?