The option needs to be supported by the carrier. If the option is greyed out, the carrier or the SIM does not list it as a supported setting. Dual SIM shouldn’t matter, as the option is in the SIM-specific menu or is toggled by ‘calling’ a short code via the relevant SIM. I’d suggest to check the carrier’s website and/or contact their customer service.
As far as I know it doesn’t treat calls to contacts any differently (as it is a carrier setting, and the carrier doesn’t know which contacts are on the device). You could potentially work around this as some providers do have codes to override the caller ID setting for the next call only. In some cases this code (or often the ‘overall’ code to switch) can even be used as a prefix to the regular number, so you could potentially add this to your contact’s number - though this may or may not cause issues with international calling. The codes for this vary (even more) per country and provider. One example which may work on some networks would be #31#0031207884400 to call Fairphone customer support (+31207884400) without caller ID (or *31#0031207884400 with ID)whilst leaving the setting untouched for other calls - if your carrier supports it. I recommend testing this with a friend by calling them before using this to manage your privacy.
It seems my previous answer was not 100% accurate. Most European countries and carriers appear to use *31# and #31#, but there are notable exceptions including, but not limited to, a number of German carriers. Check with your carrier (or for your country if you cannot find anything specific for the carrier) to make sure.