If you want it extra readable, use something like (| cBROWN cLGREY) instead of $00C0. That will compile to the same thing.
Now...
(& (ego onControl: 1) $0120) means "get me all the bits in $0120 and whatever ego is standing on that are both set". If none of them are (ego is standing on only black?) then the result will be zero, a false-y value. If ego stands on dark gray ($0100), the result will be $0100, which is truth-y. If ego stands on magenta ($0020), the result will be $0020, which is also truth-y. Therefore, this condition will be true if ego is standing on magenta or dark gray. The code, as decompiled, makes sense. To replace it with "equals $0020" is to change the entire logical meaning of the check.