In the serialization, the matrix indices are encoded.
If you start with:
mesh.getVerticesData("matricesIndices") = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0]
You take the indices by group of 4 and convert them to a 32 bits number:
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(0, 0, 0 ,0) => 0
(0, 0, 0 ,0) => 0
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(0, 0, 0 ,0) => 0
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(0, 0, 0 ,0) => 0
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(0, 1, 0, 0) => 0 + (1 << 8) + (0 << 16) + (0 << 24) = 256
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(2, 0, 0, 0) => 2 + (0 << 8) + (0 << 16) + (0 << 24) = 2
(2, 0, 0, 0) => 2 + (0 << 8) + (0 << 16) + (0 << 24) = 2
(1, 2, 0, 0) => 1 + (2 << 8) + (0 << 16) + (0 << 24) = 513
(2, 0, 0, 0) => 2 + (0 << 8) + (0 << 16) + (0 << 24) = 2
(2, 0, 0, 0) => 2 + (0 << 8) + (0 << 16) + (0 << 24) = 2
which corresponds to the data you can see in your PG:
256,0,0,256,0,256,0,256,256,256,256,513,513,256,513,513,513,513,513,2,2,513,2,2
This is an old format (still supported for backward compatibility), the indices are now serialized “as is” without any transformation when you serialize a scene.