1: a place where I develop the application
This would be you local git checkout.
2: a place where I keep a back-up of the application
Do you mean the sources or any compiled result? For the sources you can
- Use a public service like http://github.com or http://gitorious.org as backup system. I recommend this if you don't mind to use a service which is not under your control.
- Set up a own git server (a linux box with sshd and git installed is sufficient). You need to be aware that there are some pitfalls when you set up a remote repository (the repositories should be bare, and you need to set the permissions right when there are multiple unix users which should be able to push into a repository)
With either way you git push
your commits into the remote repository to have a backup of your work.
3: a place with the application ready for use
There is no definite standard on the storage of compiled results. Typical the results are stored with a defined numbering scheme on a file share/web server/whatever.
I'll use git in the development stage, but for the later I don't know what tools to use, or which are the good practices. Can you give me an advice?
As @Navi already said, an automated build tool is a big plus. A best practice is to have a one-command build, which means that you need to run exact one command to build the complete software after a checkout.
You should also consider a continous integration system, this is a software which monitors a central source code repository for changes and automatically builds the software in a clean room environment when it detects something new. CI systems are especially handy if there are many (>1) people working on a software product, since they can show broken builds very quickly.