Usually,
a CID references a block. The block can be parsed as a go-merkledag protobuf.
The go-merkledag protobuf has a binary payload which can be parsed as unixfs protobuf.
The unixfs protobuf, when of File type, would have a payload which is the chunk bytes.
Unless you are using “raw leaves”, in which case the CID references the chunk bytes directly.
Spelunking here: Disk space consumption in IPFS - #4 by hector
A block can store anything. The CID gives hints about how to parse it though since it has multicodec in it (that usually is dag-pb
which indicates the block can be interpreted as a go-merkledag protobuf).