Sentinel 2A preprocessing

Automatic cloud detection is not a simple task. So most algorithms have issues to detect all clouds and cloud shadows properly.
You can try to improve the cloud mask by combining it with some additional radiometric tests. but this is out of my knowledge.
Other options are to use a different masking tool or a different atmospheric correction.
They might give better results in some cases, in other cases they might be worse.

For masking there are other tools like FMASK or Idepix. You could also try sen2cor itself or Maja.
There are some links in this post, you might find interesting:

I’m not sure what you mean by ‘set to null’.
As said in the previous post you can change the valid-pixel expression then those pixel are not shown in the image and not considered in further processing. Or you can create new bands by Band Maths.
The expression would be like:

cloud_mask ? NaN : B5

When ever the cloud_mask is set the pixel value is set to NaN (maybe the equivalent to null in ArcGIS) otherwise the band value is used.

Regarding the export you are right. It works as you said.
Except if you create new bands with the Band Maths the scaling is already included.