That’s the best practice.
You, as a SYS ADMIN, should always be in control of what versions you run. leaving the word “latest”, will just pull the latest version, and may upgrade without your knowledge, on a server reboot, for example.
so please, always change latest (an alias to the most recent version) to the exact latest version release tag number (as of now, 4.3.2)
Whenever you want to migrate, the suggestion is to:
- do a backup
- spin up an staging environment with the exact same version
- restore the backup and files when applicable
- change the version to the latest tag version (as of now 4.3.2)
- pull the image (docker-compose pull)
- update the docker stack (docker-compose up -d)
if everything went well, go ahead, backup again and do the upgrade in production.
according to your second question, it will depend.
If you keep uploads in GridFS, it means your files will be store at DB. On this case, just backup up the mongoDB will be enough.
However, if you keep uploads in System Storage (a path in your server), you should backup and restore both the mongo and this path, and make it available where Rocket.Chat expects it to be, with the proper permissions at the restored server.
Let me know if you have any other doubts, and please, consider showing up at our next community call 
https://app.livestorm.co/rocket-chat/community-open-call?type=detailed&utm_source=COMMUNITY