You said just one question. That's three. :)
If you are developing a new module you have to go through all the steps you would normally take. On the dev machine you have to create all the definitions and create the install PA. I guess you don't have to but it's much easier to do it with the tools availble.
Once I have the module created and installed on my dev system and I've created the install PA and put it on the live system, if I then decide that I want to change something in the module and know that the whole package it's effected I just copy over the files that have had a change done to them.
You don't have to erase the old definition and create a new one if you change something on the dev system. Unless of course of have made a change that would invalidate that definition like changing the name of a class that is specified or something like that.