Components are encapsulated and their internals stay private, while their public shape is visible to consumers of the component. This strong separation gives component authors freedom to change the internal implementation details and insulates component consumers from those changes.
The public shape of a component is defined by the attributes that can be set and the events that interact with the component. The shape is essentially the API for developers to interact with the component. To design a new component, think about the attributes that you want to expose and the events that the component should initiate or respond to.
Once you have defined the shape of any new components, developers can work on the components in parallel. This is a useful approach if you have a team working on an app.
To add a new custom component to your app, see Using the Developer Console.