Particle-based instancing - howto?

I hunted around the docs and couldn’t figure this out. How would I set up a static particle field (on the surface of a mesh) and use that to drive the placement of instances? Assuming that’s possible, is it possible to randomize which item is instanced on each particle (think of a set of source meshes for trees, bushes, etc.)

It looked like particle instance was part of this equation, but I couldn’t get it set up or find an example to refer to.

Forgive ignorance - I’m coming from a modo background and trying to figure out similar workflows in blender to ease any transition / side-by-side usage.