One of the low-level differences between Rockwell controllers and other brands is that the download process recompiles the program and reloads the whole tag database.
Tag values are retained through power cycles as normal course of events (as long as the nonvolatile memory or battery are intact). That generally corresponds to "retentive" tags in other platforms.
Tags have read/write, read-only, and no-external-access protections. They can be cast as Constants (though String Literals were a recent development).
But you can't designate a "persistent" tag or memory location that is protected from being overwritten while the rest of the user application is downloaded piece-by-piece around it.
The usual workarounds are PC programs that upload a set of tags, save them in a database or file, and download those values after you've loaded a new user program or flashed the firmware.
I wish that ControlLogix had a checkbox that would cause a set of tags to be stored on the removable media and programmatically re-loaded at a later time. But that's a manual (and dishearteningly complex) programmatic process now.