About your question concerning heavy legs at the end of a long run.
This feeling can be gradual, if you are running on the flat or sudden if you are running uphill.
I think there are two main causes. One problem is that tired muscles gradually lose elasticity which causes them to become gradually less efficient. The neuromuscular co-ordination which delivers the nerve impulses to these muscles from the brain, becomes less and less, so there is nervous fatigue accompanying physical fatigue.
The other cause is the fast twitch fibers becoming glycogen depleted. When these fibers are low on glycogen, trying to increase the pace on an uphill near the end of a run causes pain in the legs, even though the pace is much lower than the pace you could have run up the hill (and without pain) at the beginning of the run.
The pain is acidosis, an increase in hydrogen ion concentration in the muscle. But why does this happen at a much lower speed at the end of the run?
When we have lots of glycogen stored in the muscles, we can produce more lactate. Lactate production reduces acidity a.k.a acidosis or hydrogen ion concentration, because lactate production consumes hydrogen ions. The hydrogen ions come from the anaerobic breakdown of glycogen, which increases for the first few seconds of an increase in pace.
At the end of a run, we want to get up that last hill at a quick pace, so we try to run it ambitiously, often a little too ambitiously, partly to test ourselves, and partly because we want to get more out of our training. This is the right approach, you are going to give yourself a much better training effect by running that last hill hard.
On the flat, the same problem, glycogen depletion, will make the pace become gradually harder, but even though the pace is often low and the lactate levels very low, you can still feel the effects of acidosis.