&& is bitwise AND operator.
&& is the logical AND operator.
& is refrencing operator.
& is an overloaded operator in C, but in this case it's the bitwise AND operator.
& cannot be used instead of &&.
It can in some places, but you're limited by the type restriction of bitwise operators and the lack of short circuiting. It's strongly recommended that one not mix the two, lest one be surprised by the resulting behavior.
Performance doesn't enter the picture, especially when micromanaging performance at such a low level is the wrong place 9 times out of 10.