For Boolean values, they mean the same thing – although there’s a compound assignment operator for XOR:
x ^= y;
There’s no equivalent compound assignment operator for inequality.
As for why they’re both available – it would be odd for XOR not to be available just because it works the same way as inequality. It should logically be there, so it is. For non-Boolean types the result is different because it’s a different result type, but that doesn’t mean it would make sense to remove XOR for boolean
.