lookup in the code browser. Shapes has FindShapes, just about the only its advantage. Shapes.All has tons of methods to operate on shapes. Also Shapes is static and represents part of existing document's objects hierarchy, you cannot add or delete shapes directly, it's not an array. On the other hand, Shapes.ALL is a dynamic run-time array [collection/class object] which may consist of just any user-specified set of shapes, even from different pages or layers.
However in 99% of cases I don't use Shapes object directly, instead I use .Shapes.FindShapes method to fetch instantly a flat list of all of the groupped shapes, sub-groupped, and so on:
dim sh as shape, sr as shaperange
for each sh in sr
or probably set sr=activeLayer.FindShapes, or set sr=activepage.FindShapes