What you see in the Applications menu or your desktop are what we call launchers. Unlike Windows or MacOS where an application is a "bundle" of the app itself, the icon to display and can be renamed to anything, Linux just places the binaries themselves where appropriate and they contain nothing besides executable code, so we use launchers to organize them. They're text files (with .desktop extension) that define a name to display, the path of the command/app to run, the icon to display, the category and so on.
There are default directories that are used to store launchers: /usr/share/applications (system level) and ~/.local/share/applications (user level). The Applications menu lists and sorts the ones it finds in these dirs to show you an organized list of the apps that have been installed on your system (well, the ones that actually have launchers). You can easily add your own launchers to the menu simply by creating .desktop files and adding them to one of these dirs (system or user, depending on who needs to have access to the app).
To come back to your initial issue, I'm not very familiar with snaps but I would assume that at least some of them delete the content of old versions when updating them, so the personal launcher that you have on your desktop references content like icons that don't exist anymore in their old dir.