I can answer 1, 2, and 4 off the top of my head:
> Is there a way to pass FCOS an ignition file while it's running for the
next reboot? Or do you need to externally kill the machine and pass the
.ign file again through the firmware?
That's sort of an anti-pattern and not supported. Ignition is only meant to run on first boot, weird unexpected things might happen if you run it every boot. It's not meant as a configuration management tool. That said, writing the ignition firstboot file to /boot will trigger it to run again, just beware this isn't a supported mode of operation. Also note that Ignition doesn't always pull it's config from firmware. That's the case on qemu, which I assume is what you're running, but on clouds it pulls it from the cloud's metadata service. Finally, Ignition also can read a config off /boot (which is how bare metal installs work) and will prefer that to fetching it from a cloud provider.
you see the ignition file while the machine is running that was passed
during startup? Is it unmounted somewhere or in the initramfs.img file?
On first boot it's at /run/ignition.json. It's not accessible on subsequent boots.
> How do rpm-ostree and ignition work together? Does rpm-ostree pull down
ostree updates on some sort of cronjob type schedule? Are the updates
in an OCI image (oscontainer)? Where is the image unpacked? How does
ignition know which image to use when it starts the machine?
They don't. They're not really aware of each other and don't need to be. Ignition only runs on first boot, not on every update, so no interaction is needed.