Before the 6.9 betas people usually handled this with Unassigned Devices plugin, and that will still work for now though in some ways it is simpler and more flexible with multiple pools. I have a 2x500GB cache pool which I use for caching user share writes, and 1x256GB NVMe "fast" pool for my dockers/VMs (appdata, domains, system shares).
Here is what those shares are normally used for:
appdata - the "working storage" for each docker container, for example, the plex library (database).
domains - the vdisks for VMs. You can put some of this on the array if you want, or you can just put the OS vdisk in domains and use the virtual network to access Unraid storage for other purposes.
system - docker.img and libvirt.img, docker.img is the executable code for the containers, and libvirt.img is the XML for your VMs.
dockers and VMs will also typically use other user shares on Unraid which may be on the array or cache (or cached then moved to the array). For example, your media for plex or downloads from whatever app would be on one or more user shares.
Yes, upgrade just replaces the Unraid OS archives on flash. Those archives are unpacked fresh from flash into RAM at each boot and the OS runs completely in RAM (think of it as firmware except easier to work with). Your configuration (config folder on flash) is independent of that upgrade. Sometimes new features might be a reason to change some things about your configuration though, such as multiple pools.