A quick note on Mercurial (and distributed revision control systems in general)
If you are the only developer working on your project, and you have no desire to share your development code, you have no need to upload your code to a "Mercurial server". Everything that Mercurial needs to properly track revisions is stored locally.
If you ever want to share your code, it's very easy to take your existing local Mercurial repository and share it using a service like Bitbucket. Once you do that, your entire revision history will be available to anyone you allow to access the repository on the service.
Now let me tackle your question part by part.
Using Mercurial as a local revision-control system: Excellent. This is what very many people do. It's great to have all your code in a revision-control system, even if you're the only developer using it.
Taking production code and copying it to your production system: Correct. If you release infrequently, you can even tag that revision in Mercurial so that you can easily refer back to it. Copy only the code, and not the .hg
directory.
Keeping a copy of your development code on your production system: Don't do this. If you really like having your code hosted elsewhere, you can investigate solutions like Bitbucket. Again, this is unnecessary if you're the only one developing this project at this time.