redirect after login in drupal without impacting the password reset functionality
hook_user_login is as you'd expect for when someone goes from anonymous to authenticated. This happens by using the login form and by using a password reset link.

Having a look on Drupal's API site is always worthwhile as people have usually commented on comment occurances like this. For example on https://api.drupal.org/api/drupal/modules%21user%21user.api.php/function/hook_user_login/7.x it has exactly what you're describing and recommends using something like: 

if((!isset($_POST['form_id']) || $_POST['form_id'] != 'user_pass_reset')){
  //your redirect code
}


But also using form_alter would also be perfectly fine really as you want to target a specific action of logging in via a specific form