How does Southern get away with charging vastly more for a return when traveling from London than to?
An example from East Croydon to Chichester is 19.45 but if travelling from Chichester it's 12.80. Why on earth do they think this is acceptable?
Because it's not as if they have introduced it. It's a remnant from the "good old" BR days, when market based pricing, and in particular directional pricing, was introduced. There have been numerous substantial real-terms increases in fares since privatisation but Southern have not really taken part in this; their fares have remained relatively speaking flat in real terms since privatisation (certainly not increasing more than other operators).
This level of difference is a lot less than the highest it gets, which is a hair under 2× for the Anytime Day Return towards London rather than coming out of London, e.g. for some SWR, Southeastern and Chiltern flows.
I don't particularly see anything wrong with having this sort of market based pricing. It's clear that the greatest demand on commuter train services in the southeast, out of the entire day, is in the couple of hours in the morning peak. Why should people departing London in the contra-peak pay the same fare as those departing towards it in the height of rush hour?
Or, to put it another way, why should people who cause the greatest percentage of the southeast commuter railway's costs (because much of the peak "reinforcement" stock lies idle during the off-peak) not contribute more towards this? There are many things broken with rail fares, but I really don't think this is one of the biggest issues!