Let's say you execute controller all command to scaffold Spring Web MVC controllers corresponding to JPA entities in your Roo project. The command is passed to the Spring Web MVC add-on of Roo, which is responsible for processing the command. The Spring Web MVC add-on creates a controller corresponding to each JPA entity in the project. So, the scaffolding in Spring Roo is performed by add-ons.
Coming to the specific example in which you create a JPA entity and define certain properties. If you have created a JPA entity manually, you need to inform Roo that you want Roo to generate the CRUD operations for the entity. You can do so by simply annotating your JPA entity with @RooEntity annotation. When you annotate the JPA entity with @RooEntity annotation, Spring Roo comes to know that this particular JPA entity needs to be managed by Roo. So, Roo goes ahead and informs the add-on which deals with @RooEntity annotation. The add-on then creates the ApectJ ITD file which contains identifier definition, CRUD operations, getters/setter, and so on.
To extend Roo, you need to understand AspectJ ITDs. But, most importantly you need to understand Roo architecture (which includes add-on architecture and core modules of Spring Roo) and gain some understanding about OSGi and maven.
To go about creating an add-on, you need to get conversant with Spring Roo architecture. Spring Roo 1.1 Cookbook talks in detail about creating a simple and advanced Roo add-on. The Spring Roo reference also talk to some extent about creating simple add-ons.