Tak. | to "OR", czyli na każdym miejscu gdzie w jednym z operandów było 1, w wyniku też będzie 1. Czyli w polu bitowym ustawisz wybrany bit na 1 (bo ITEM_ACTIVE jest zdefiniowane jako 1 << x, czyli liczba która w reprezentacji bitowej zawiera same zera i jedną jedynkę na pozycji x od końca).
Przykładowo:
item.flags = 11000010 //pole bitowe
item_active = 00001000 //maska bitu w polu bitowym
OR = 11001010 //rezultat alternatywy bitowej, czyli tutaj ustawienia bitu o wybranej pozycji
A wyłączasz bit w masce bitowej przez operację odwrotną - czyli wykonanie koniunkcji z negacją (& ~):
item.flags = 11001010 //pole bitowe z już nałożoną tą maską
item_active = 00001000 //maska bitu w polu bitowym
~item_active = 11110111 //zanegowanie maski, czyli zamiana wszystkich 0 i 1.
AND = 11000010 //rezultat koniunkcji bitowej, czyli tutaj wyzerowania bitu o wybranej pozycji
XOR ^ zadziałałby tu na przemian - zamieniał 0 na 1 i na odwrót na wybranej pozycji.