You should use System.Web.UI.WebControls.WebContro
l when your control is going to have a UI component visible on the rendered page, as it contains the various plumbing code generate a UI (though still requiring considerable work from you to create that UI).
System.Web.UI.Controls
are for when your control will not have a UI on the rendered page (think some of the ASP.NET DataSource controls that reside in the toolbox, can be dragged onto a page, don't render anything, and act as a conduit for getting data to a GridView control that does have a UI).
See this MSDN article.