I have a repository where:
> hg st
shows that my working directory has some uncommitted changes, while
> hg diff > h
If you have ignorews or ignoreblanklines set in .hgrc then hg status will show it as changed but hg diff won't (assuming the changes are only whitespace of course).
ignorews
ignoreblanklines
.hgrc
hg status
hg diff