@gjayne1984
The choice of which to do is usually dependent on the scenario and the design. There is no particular best practice to that specific situation.
You really need to think in terms of "what data do you already have?" Consider that your gallery has already taken the performance and datasource hit to get a record (multiple in the case of the gallery). So, using a Lookup later on to get it yet again, is just a waste.
There is no sense of getting the most up to date item details as the app has already gotten them and will not get any changes that might have happened since your gallery displayed to the time that you selected it for a form. You would need to refresh that datasource/record first - which is even more of a performance hit and needs to be designed into your app architecture properly.
However, as mentioned, there are times to do the lookup. One scenario in mind is when you have data-shaped the table of your gallery. If you have added rows or done other shaping to it, then the schema of the gallery item will no longer match the schema of the datasource record. So, either you "un-shape" the record for the form (thus avoiding the datasource re-hit) or you do a lookup again to get the record in the proper schema format.
For the second method - in general, when you are referring to a record, it is always best to set a variable to the full record and not just a column of the record. Doing so will eliminate having to do even more lookups later on as you will have the full record in the variable.
One slight modification is to know that ThisItem always refers to the current record, so using Set(varSelectedItem, ThisItem) is sufficient and a little less typing. It will also adjust for you (from a naming perspective) should you end up doing copies and pastes and the name gets changed. It is always best to refer to ThisItem, Self, Parent, etc. rather than by name to avoid having to change formulas in the future.
Once additional part of the variable for the record. It is always good practice to keep the variable up to date. This is something you have to do always with variables. They will not change on their own. So, once you have selected a record in the gallery, edited in a form and then saved, it is best to put the following in the OnSuccess action of the form: Set(varSelectedItem, Self.LastSubmit) This way your variable is up to date with the latest changes.
So, to summarize, each of the methods has its purpose and it depends on your overall design and use.
One third method you did not discuss is simply referring to the gallery selected item from your form. Ex: yourGallery.Selected as the Item property. This involves NO variable. However, you need to use this only in scenarios where your gallery selections will not change when the form is submitted. If you have a formula on your Items property of the gallery that involves any data-shaping (including sorting in this case), then your gallery will re-evaluate the formula in the Items and rebuild the gallery every time the datasource changes (as in the submit form). This will cause the selected item to change to the first one in the gallery. And, if you are depending on the gallery.Selected record, then it will no longer be what you expect. BUT, I mention this because, there are times where this is completely usable in a design.
I hope this is helpful for you.