In vS2012 I can see Visual Web Part, Visual Web Part (farm only) and webpart.
What is difference between these?
What governs the choice of one of these?
webpart is a simple class.
Visual Web Part is a partial class which has markup. This markup is compiled into the assembly.
Visual Web Part (farm only) is a class which has reference to the user control. This control is deployed to the SharePoint root.