The other answers give a good list of tools to work with. Workflow will highly depend on type of projects and people involved. If you are starting out I would suggest investing into the following:
1.) Automate the installation of Magento
Set up a 1 command/click process to install Magento including sample data. Tools mentioned for this
n98-magerun
mage-ci
jumpstorm
or your own script. Some pointers can be found here.
The idea for this part is that you are able to create a fresh instance with repeatable settings without much effort (the moment effort is involved you will become hesitant/lazy to create a new instance)
2.) Develop and test with the instance set up in 1.).
For developing I have encountered two trains of thought:
a.) Magento Core is part of your project
Lots of folks use modman here, to keep their files outside of the Magento folder structure so be sure to check this out as well.
b.) Project only includes the extension/theme files
Both Phpstorm and Netbeans allow you to deploy on save to a specified location (your Magento root folder, can also be an online instance via FTP). Using Magicento for Phpstorm you can make up the disadvantages of this approach (class hinting, seeing inheritance, auto completion ...)
My gut feeling here is that if you are developing for one particular client you would go for 1.) with the targetted Magento version installed and if you intend to support multiple versions of Magento you would go for 2.)
3.) Share code with team
deploy into an environment where your code can be tested in conjunction with your colleagues' work
4.) Start your QA/deploy process
Overall
use a distributed version control system (git, mercurial, ...)
include tests (unit tests, integration)
automate what you can
read lots - follow some of the experts on here who freely share their knowledge (check their personal blogs/github accounts). More often than not this will save you lots of time and you will learn quicker than trying to discover it all yourself.
Happy Coding!