Now yahoo domain is on sale $3 /year. If I buy domain from Yahoo and want other company host the site, does Yahoo charge for this? Or only charge the domain fees $3/year?
Well this is probably a dumb question, but did you read the TOS at Yahoo which likely already answers this? Or, have you thought to ask Yahoo this question? EDIT: A quick look easily indicates that Yahoo is only offering this price IF you host with them or you're using their other business services:
I think you can do that. I have a name at yahoo at the same price and now I have changed the DNS to other place without problem.