You should comment every function. What each variable represents, the return value, and any errors/exceptions which might occur.
Other that that, comment only things that you find would make yourself laugh a few months from the time you write it.