Why does London have so many airports?
Why does London need so many? I think two airports is enough. Plus, they are put in bad locations. 


As others have mentioned, London is a huge connection point for several parts of the world as well as being one of the big financial cities in the world. 

During WW2 a huge number of air bases in the UK were built or expanded by the allies, and post-war several of them were used as civil airports. Several of the ones you mention has roots in this:


Southend was built during WW1, closed after and reopened in the 1930s
Gatwick was built as a civilian airport between the world wars
Stanstead was built during WW2
Luton opened just prior to WW2
Heathrow opened between the world wars as a civilian airport


Several of them saw expansions by the military during WW2, getting improved infrastructure and bigger capacity. Once the war was over, the airfields were available to civilian and commercial use.


  So, is this for a practical, or some kind of other reason?


It is not as if the city of London planned where to put each airport. They were there when the need for additional capacity appeared; in some cases the airports initially served local municipalities and cargo airlines, later to be used by charter and other airlines when the airports closer to London were full. The same thing is done today with budget airlines choosing to operate out of airports further from the population centers where the operational costs are lower for the airline.

The only apparent exception to all this is London City Airport, the only of the airports mentioned built after WW2. It was built in the 1980s as part of a bigger plan to revitalize a part of London; by having a small business airport close to the city it could attract new investors and companies. 


  I think two airports is enough.


By numbers alone, London could get by with two Atlanta-sized airports. But to do this you need room to build and the political will to spend money on expanding an airport rather than allowing airlines to use other airports further away.