The simplest possible approach which will work in all occasions is to make a copy of the leader when you load it and compare current leader with the copy you made when you press the button.
function TodoCtrl($scope) {
  // initialization
  var originalLeader = null;
  $scope.leader = null;
  $scope.mode = 'edit';
  // this is where you get your leader data, in my example 
  // I simply set it to demo data but you can load the
  // data using AJAX for example
  var loadLeader = function() {
    var leaderData = {
      mobile: '000',
      work: '111'
    };
    originalLeader = angular.copy(leaderData);
    $scope.leader = leaderData;
  }
  // loadLeader will be invoked on page load
  loadLeader();
  $scope.save_profile = function (leader) {
    // you have access to your original data and current data,
    // you can compare them and do whatever you want with them
    console.log('originalLeader ', originalLeader);
    console.log('leader ', leader);
    // for example
    if ( leader.mobile != originalLeader.mobile ) {
      alert('Mobile has changed from ' + originalLeader.mobile + ' to ' + leader.mobile);
    }
  };
}
Some answers suggested to use $scope.$watch, you can implement your solution using that but you need to be careful as the $scope.$watch callback will be invoked on each change. To illustrate what I mean let's add something like this to your code:
$scope.$watch('leader.mobile', function(newVal,oldVal) {
  console.log('newVal ', newVal);
  console.log('oldVal ', oldVal);
});
Let the leader.mobile be 000 at the init time. 
You type 1 to the text box, now leader.mobile is 0001, the callback function will be invoked and the log will be:
newVal  0001
oldVal  000
Now you press backspace and delete 1 you previously typed, the leader.mobile variable is now 000 and the log is:
newVal  000
oldVal  0001
Your current data is same as starting data but the $scope.$watch was invoked twice and is difficult to determine if data has really changed or not. You would need to implement some additional code for that, something like this:
// be careful about this, you need to set to null if you reload the data
var originalMobile = null;
$scope.$watch('leader.mobile', function(newVal,oldVal) {
  // set originalMobile to value only if this is first 
  // invocation of the watch callback, ie. if originalMobile
  // was not set yet
  if ( originalMobile == null ) {
    originalMobile = oldVal;
  }
});
$scope.save_profile = function(leader) {
  if ( leader.mobile != originalMobile ) {
    // ...
  }
}