It appears that my issue was the following setting which is wrong for my setup:
<setting id="videoscreen.limitedrangeaml">false</setting>
I’ve done a test and ran two scenarios, both in Force RGB off mode, so Kodi was always in YCbCr mode.
In the first scenario I enabled limited range in the GUI and played a widescreen file. Everything looked fine, and the black bars are nice and black.
In the second scenario I enabled full range in the GUI, now menus appeared lighter. When I played widescreen file the black bars are grey. This kind of makes sense because all YCbCr consumer content conforms to a spec that says it must be in limited range.
My projector only has one YUV mode (i.e. YCbCr setting, can’t specify 0-255 or 16-235 levels). What I didn’t know previously was that this limited range setting in Kodi not only affects when output is in RGB but also in YCbCr.
However, after scenario two above, I was intrigued. Why did the black bars appear grey, but the video content’s blacks still looked nice and black? I then did a test with the black levels test file as per Kodi wiki (https://kodi.wiki/view/Video_levels_and_color_space) and it appears black levels are the same in both scenarios.
So to me it seems Limited Range setting should be enabled in GUI, at least for my setup. But it seems also, in some if not all cases, this does not detrimentally affect consumer video, best case it only messes up black bars to look grey.