The first is related to creating a 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), ...
.