Start with Applications -> Automator. You can have it "Record" the setting up of the VPN server of your choice.
Then there is AppleScript, but for me that generally requires a book and Google searches to find examples close to what I want to do.
It may be possible to do some stuff via Unix shell scripts (sh, bash, awk, perl, python, ruby, etc...) and then invoke this via an Automator action, an AppleScript command, or just wrap the shell script using Platypus (search Platypus at VersionTracker.com).
If you need to configure the customer's Mac OS X firewall, that might also be an Automator action, or since the firewall is really the Unix ipfw (man ipfw), that could be a use for shell scripting.
If you need to fetch stuff from the web as part of your installation, you could use something like /usr/bin/curl in a shell script.
Setting up automation can be difficult and I'm not making light of the task. What might look like a good approach may find that the last 5 inches just can be done and you have to back track and use something else. And then there are the variables created by the fact that every customer will be different and you will find that some expected situation doesn't exist because the customer has customized something.
NOTE: The Vine Server (aka OSXvnc) can be setup to make a reverse connection. It may even be possible to use an Automator script to setup that connection for you, specifying the address.of.your.VNC.client and port number you are using.
Or create an AppleScript (which might be more robust than Automator).
Or establish an example reverse setup, then using "ps -axlww" see what the actual server command line looks like, then create a shell script wrapped by Platypus to do this for the customer.
OK, your turn to go chasing down dead-ends and practice backing out. After all you are the one that is going to get paid, I'm just doing this for fun 🙂
However, if you need to configure a customer's router that could be a problem as every darn one of them is different.