A timer is a simple element that controls how long JMeter should delay between each test sample when it runs. This allows JMeter to simulate human actions more closely. Timer element's are leaves in the test tree they can not contain sub-elements. A listener receives information about response data while JMeter runs. For instance, during testing of a website, a listener receives and collects sample data that indicates how many milliseconds it took the web server to respond to each request.
Listeners are also leaves in a test configuration tree.
A controller is an element that controls the flow of test samples. It also controls the process by which test samples are created. Controllers implement JMeter's various testing protocols. A Config Element represents a coherent set of information that is usually specifically targeted to a particular protocol or controller. Config Elements are leaves in the test configuration tree.