So according to all the feedback and articles referenced so far:
- HttpWebRequest - original HTTP API. Provides low-level control.
- WebClient - layer of abstraction over HttpWebRequest. Simpler to use, slightly slower performance.
- System.Net.Http.HttpClient - Layer of abstraction over HttpWebRequest that provides more features than the previous two options. Up to version 4.0.0.0 it was just for full .NET, nut since version 4.1.0 supports .NET Core
- Windows.Web.Http.HttpClient - a consolidation of HTTP API's from multiple languages (C#, VB, C++, JavaScript). Mainly used for multi-language Windows Store App developed so that only one API needs to be referenced.
- Microsoft.Net.Http - HTTP API that replaces System.Net.Http.HttpClient 2.0.2 or older. This is used to support older .NET applications.