I think the simplest method is to get the list using PublishingPage.VariationPageUrls.
It gets a StringCollection object of URLs that point to Variation peer PublishingPage objects associated with this PublishingPage object.
So in your code, it would be something like..
PublishingPage page = PublishingPage.GetPublishingPage(SPContext.Current.ListItem);
StringCollection peerUrls = page.VariationPageUrls;
foreach (var peerUrl in peerUrls)
Apart from that if you want to get all variation labels, use
ReadOnlyCollection<VariationLabel> spawnedLabels = Variations.Current.UserAccessibleLabels;
Once you have the label you can access its members like locale, display name, title etc. Check VariationLabel Members
Once you have variation label, you can even call yourPublishingPage.GetVariation(variationLabel) method to get exact URL of current page's counterpart (given the variable label).
I hope this connects all dots and you get everything you want with properly expose APIs.