Is there anything like /etc/hosts at user level in mac? I want to block some websites for my son who does understand difference between parental controlled vs "not working" sites. 

He is addicted to youtube which I don't want him to use since there are lot of terrible and bad and disgusting videos out there.

I would use /etc/hosts but I sometimes have to go youtube. So is there anything I can use at user level?
There is nothing you can do to block specific Youtube content from within the system. But you have two options to avoid the problem:

Option 1: If you want to completely keep your son from visiting Youtube, create a new user account for him. Enable OS X's parental controls on that account and block Youtube.com. You will still be able to visit Youtube from your account. Set a password for your account. You can find instructions for setting up parental controls in OS X here.

Option 2: If you want to keep your son from watching videos that have been marked by the Youtube community as inappropriate for children, turn on Youtube's parental controls. Refer to the following instructions: Youtube's parental controls

Note: Both options, specially the first one, will make your son be able to tell that you are using parental controls. If you don't want him to know the only option is editing /etc/hosts, but it'll be easier to just let him know that you don't want him to watch specific videos or spend so much time on Youtube.