What's the difference between GPU particles and GPU mesh instancing for Game Objects?

I see a lot of tutorials where millions of GPU particles are on screen. But the GPU particle uses a mesh and a shader with gpu instancing. Is there any difference between a gameObject with a mesh that has a shader that uses GPU instancing, and a gpu particle? Would I be able to do millions of GameObjects in a scene or do they have to be particles?

I’m dealing with the differences right now as GPU instanced particles require a shader that has a required property (transform) specified as a non-square matrix in the struct DefaultParticleInstanceData (found in UnityStandardParticleInstancing.cginc). Non square matrices are unsupported on OpenGLES platforms like Android (hence the exclude line in any shader that attempts to include UnityStandardParticleInstancing or in any shader that attempts to specify a custom struct that includes the float3x4 transform declaration).