They can both be used to mean 'bravo' or 'well done', especially if someone has done something that shows skill, courage, or ingenuity.
I'm not sure they are always used in the same way, though. For example, if someone has been brave enough to challenge her boss at work, you might say 'Good on her'.
'Good for you' can also be mean when someone has simply been lucky. For example, if someone has won a lottery, you might say 'Good for him'.
I'm from the UK. Neither of these strike me as particularly British phrases, although both are used. 'Good on you' sounds Australian to me, for some reason.