A func_train follows a predetermined path with a predetermined speed. It only allows a player to stop and start it, and even that only indirectly (via a button for example). This is what you use if you want to create an elevator or an advanced door.
A func_tracktrain follows a certain path (railway) and only allows control over the speed and in a limited way the direction (forward, backward). In other words this is what you'll use to build a train (or a mining cart or whatever).