I am not asking about block weight. I hear many people saying that the actual Bitcon block size is 2mb. However, in any block explorer, I can see that blocks are around 1200kb. This is very confusing, where is the cap?
The cap on the block size excluding witness data is 1000000 bytes.
There is no cap on block size including witness data. Instead, there is a limit on the block weight at 4000000 weight units. Depending on the composition of the block, 4000000 WU can correspond to anything from 1000000 bytes to close to 4000000 bytes (including witness data).
But a block with 4000000 WU is "full" - regardless of whether it's 1 MB or 3.8 MB of data.