The reason you are encountering difficulty with the third point is because your action is dependent on dropdown A having a value, rather than dropdown B. By adding a new trigger for dropdown B and implementing the same functionality as it relates to B, you will be able to achieve the desired outcome.
Here are the steps to follow:
<select data-ng-model="option2" data-ng-options="option for option in options2" data-ng-show='options2.length' data-ng-change="getOptions3()">
Next, create a function in your controller to update the options for dropdown C:
$scope.getOptions3 = function() {
var key2 = $scope.options2.indexOf($scope.option2);
var updatedOptions = option3Options[key2];
$scope.options3 = updatedOptions;
};
I have made the necessary changes to your fiddle: http://jsfiddle.net/Xku9z/1196/