First, because V (which is a subset of vertices of G as you state) is itself a weighted graph - calculate the edges of V first so you can ignore G.
For example this input of G:
G1 (Va) -- 5 meter --> G2 (no V) -- 10 meter --> G3 (Vb)
Can be simplified to this input of V:
Va -- 15 meter --> Vb
The fun starts when you have the input has multiple paths between to V vertices (with no other V vertices in between):
G1 (Va) -- 5 meter --> G2 (no V) -- 10 meter --> G3 (Vb)
G1 (Va) -- 7 meter --> G4 (no V) -- 7 meter --> G3 (Vb)
Then the simplified form is (it takes the second route):
Va -- 14 meter --> Vb
Use the Dijkstra algorithm during that simplification.
Second, apply a good TSP algorithm on V. It's NP-complete so there is no perfect algorithm. There are many available frameworks depending on your programming language (java, C/C++, ...).