It depends on which methods and properties you want to write by yourself and which you want the object to handle.
The control class mostly used for owner-drawen one perpose element, that you want to write from scrach.
example for this is an owner-drawn button writing from scrach.
panel is a base containr and to create control with containr abilties, it is common to use it (even due you can do this also by a control or user control).
example for this is a panel with some kind of header on it.
The user control mostly used for heavier controls, which have more than one control and you want to combine their properties and methods.
example for this is a control with textbox and button on it.
anyway, you can do everything on each of this controls...