That works nicely for checkboxes, but sometimes you want the form field and label to be in (say) different cells of a table row or something.
You still have to do the complementary for= and id=, but I am also a proponent of nesting, though I have not solicited public opinion on it until just now.
What do you mean by “have to”? The whole point of nesting is that the association is implicit.
labels should always be to the right of the checkbox/radio controls. never nest them.
nesting is ok for other form controls in some instances, but you'll run into issues with various screen readers if you apply the for attribute while nesting.
on that note, always nest when possible; the ux benefits make it crazy not to take advantage of it.
Is there a reason to not nest the checkbox inside the label? I have always put them next to the checkbox until very recently, when I was trying to increase clickable area. I've found it ends up working much better than putting it beside, covering the area around the checkbox, too! Is this "improper HTML"?