For what it is worth (especially this late in the game) the quality and type of comments added to the code is a combination of several factors.
1. Number of expected eyes. The more people that I expect to see it, the better the comments need to be.
2. Length of development time. The longer the code takes to write, the better the comments need to be. For some of my personal/hobby projects that have lasted for months or years, I was lucky to find 20 minutes a day to work on it. Adding comments to the code was absolutely necessary so that I could get stuff done.
3. Code complexity. The trickier the code, or the more modules/files that impact the code, the better the comments have to be.
4. Prep-work time. The longer it took me to figure out what I needed to do (and why), the better the comments need to be.
Re-reading through this, the longer I expect the code to be around, the better I expect it to be written and commented. I don't want to waste time trying figure out both the intent AND what the code is actually doing. Nor do I want others go through that as well. The better the comments in the code, the faster someone else can get up to speed on the code I have written, which means that it costs the company I work for less $$$ down the road.
When writing comments, I try to include ...the 'why' where applicable, and what it is supposed to do, and on the complex code I state
1. The INTENT.
2. The 'WHY' where applicable.
3. Expected state information at various locations for more complex code.
Readability is a must. If it is not readable, then from my position it is flat out wrong. If it is not readable, you (or someone else) can not know if it is right.