3MF against G-code

A .3mf is the job before slicing. G-code is the list of moves after slicing, for one printer.

Which one does my printer read?

G-code. A .gcode.3mf from Bambu Studio, OrcaSlicer or Creality Print is G-code packed in a 3MF container. It has no settings to edit.

Which one should I share?

The .3mf. The other person can slice it for their own printer. Share G-code only with someone who has the same printer, nozzle and filament.

Can I edit either one?

A .3mf, yes: change a setting and slice again. G-code, barely: the moves are already computed from the old settings.

Where is this specified?

The container is the 3MF Core Specification. G-code has no single spec; each firmware documents its own dialect.