Custom Components are a new concept introduced with version 3.1 of Qlik Sense.
The main purpose of Custom Components is to empower Widget creators even more with several components which can then be used in a declarative way.
Such a component could be a slider, a date-picker or anything else which encapsulates some common and re-usable functionality.
The approach of developing Custom Components is similar to the Visualization Extension concept, by using Custom Component API you can make use of the full power of web programming capabilities.
The introduction of the Custom Component API does not contradict the main goal of Widgets ("Create new visualization without the need of programming"), it even emphasizes this approach by allowing developers to provide powerful components to Widgets creates, which empowers Widget creators.
As of Qlik Sense 3.1 the concept of Custom Components is only targeted for Widgets, this might change in the future. It could be that Custom Components can be used in other concepts such as Visualization Extensions, Mashups and other ways of extending the product.