According to the git rm documentation,
--cached
Use this option to unstage and remove paths only from the index.
Working tree files, whether modified or not
git rm --cached removes the file from the index but leaves it in the working directory. This indicates to Git that you don't want to track the file any more.
git reset HEAD leaves the file as a tracked file in the index, but the modifications cached in the index are lost. This has the effect as if the file in cache had been over written by the file in HEAD (and the working tree file being untouched)