is it better to fly between these two cities - or take the train? how long is train ride? flight seems to be inexpensive. which is better?
Train takes 8 to 10 hours so one option would be to take overnight train. The other option is to take bullet train Sapsan. It takes 4 hours. That's still better than to fly. The price of Sapsan depends when you buy your ticket (up to 45 days ahead) and which time of day it goes. In average $150 plus minus.
I'd stick with the Trains. Mainly because they're a lot safer than the airline's that fly w/in country.
First, when dealing with Russia, be sure you are getting up to date info; things there change fast. So here's my actual experience, with dates. In 2001, I took a night train from St. Petersburg to Moscow. It was one of the fancy ones (numbered 1-6; the most famous is the Red Arrow, but there are comparable ones). I was with my sister in a 2 bed compartment, and it was quite nice. They slow down the trains on this route at night, so it does take 8 hours, and you arrive in the morning. This way, you save the cost of a hotel. In 2010, my sister was living in Moscow, so saving a night in a hotel was not useful to us. We therefore took the then-new Sapsan high speed train from Moscow to St. Pete and back. It took 3 hours and 55 minutes and was nonstop (some make a few intermediate stops and take about 20 minutes longer). It was VERY nice; there's even a full-length mirror in each bathroom, and two bathrooms per car! WiFi was available in business class, but we went coach - perfectly fine and very relaxing. The airports are a hassle to get to (taking time, money or both). Given this, it's both faster and much less hassle to take the train. You couldn't pay me to fly this route. Depending on your needs, the day or night train should both be fine. My sister was working at the US Embassy in 2010, and their travel agent got us the tickets. In 2001, we used the travel agency in the St. Petersburg youth hostel. Getting train tickets yourself in Russia without an agency is a HUGE hassle-after one experience, my sister refused to ever try again (and she speaks Russian!). www.seat61.com has a link to an agency that sells tickets, and has other info about getting tickets in advance. My train was quite full, and so I'd definitely get advance tickets even if it cost more.