This is an individual thing.
This works for me.
On import I give all my raw files a unique number (6 digits as I have 75,000 images currently in my catelog) as part of the file name.
If I create a master PSD file, I will keep it with the same filename in the same folder as the raw. All exported versions of either raw or PSD are stored in sub folders (eg Web, Print,Full Jpg, Client ABC) and all retain the unique number.
A long time ago I stopped using virtual images.
If I need a different version for a different purpose (eg I want both a colour and B&W print), I use the Lightroom feature to "Export as Original" the raw file into the current folder and will add B_W (or similar) to the filename. Again I retain the unique sequence number but with the option to create a second copy.
I use snapshots if I want to explore different processing options, but if I want to use more than one snap shot to export, I will create another original copy so I always have the base raw settings and ability to re-edit as required.
If I want to use a raw file from an existing project into a new project, I will "Copy As Original" into a new project folder, keeping the unique number but adding some other ref to the filename. I can now generate as many daughter images from this new original as the project requires and have them all collected to-gether within the same folder structure.
A simple text search of my unique image number will show me all variations of my image within my entire Lr catelog and across multiple projects, if they exist.
I believe the Adobe virtual image concept is good, but currently not complete (another example of Adobe 90%). The main (and serious, in my opinion) flaw is the virtual settings are only held in the catelog file. They should be stored either as separate XMP files or the XMP file should hold all virtual settings.