They are stored in /var/lib/mender/mender-store, an LMDB database. They get written immediately after the ArtifactCommit state has finished successfully, together with the new artifact name.
Yes, but only in Update Modules, not in state scripts. They are available as artifact headers in header/header-info inside the directory which is passed to the Update Module when it is called. See the File API in the Update Module specification for more information.
They are protected by normal Unix file permissions, writable by root only.
Yes, use mender show-provides. Note that these only display the currently active provides, which during an installation, are still the old provides. Use the header approach I described above if you need the provides of the new artifact during installation.