The first (constructor) is associated with an instance of the class and has nothing to do with Angular2. I mean, the constructor can be used for any class. You can add some initialization processing to the newly created instance.
The second corresponds to the Angular2 component lifecycle hook:
ngOnChanges called when the input or output binding value changesngOnInit called after the first ngOnChanges
, ngOnInit, (, , @Input), ...