Your point (3) is a little off; the congestion charge might be preventing a really large number of private cars from driving within the toll zone. If there are enough private cars, they can cause more congestion overall even though they individually make small contributions.
My point is that the congestion caused by a single taxi in a day is multiples of that caused by an average car in a day. So, it's not economically efficient (i.e. doesn't provide the right incentives) if the taxi pays zero (for driving around all day), and the regular car pays 11 pounds (for what is usually a one-time crossing through the zone).
I don't disagree with the principle of the congestion charge. I just think that the pricing should be such that it incentivises a reduction in congestion. Mileage-based charging would help with that.