This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
This is quite a common 'structure' you'll see in public APIs (so is something useful to recognize for future)!
HttpClient is the Interface - So you would not use this directly, but you would use an implementation of that interface (or build your own implementation)
AbstractHttpClient is an implementation of HttpClient - It contains some default functionality and extension points that Apache thinks almost all implementers of HttpClient would use - So you would probably not use this directly, you'd want to use a class that extends from this one (someone else's or your own).
DefaultHttpClient is a 'default' implementation - It extends from the basic functionality and extension points that AbstractHttpClient provides and is meant to be used by people who just want an 'out of the box' solution, which a high percentage of people do. This is almost certainly the class you want to use, unless you have some unusual requirements it'll almost certainly do the trick.
Remember to 'code to the interface' though!
HttpClient httpClient = new DefaultHttpClient(...);
as opposed to:
DefaultHttpClient httpClient = new DefaultHttpClient(...);