Just to add to Theodores' answer, version control with a CMS as large as Magento can be one of the most helpful things in the world. Tracking changes, taking steps back, and grouping your projects are all big time savers - and only a few of the benefits of using a tool like git!
Here is a good list of queries to clear all customer and order data, which I highly recommend you do for any development database: http://www.magentocommerce.com/wiki/import-export_and_data_manipulation/deleting_order_and_customer_data_with_sql
I recommend running and logging your MySQL script via Magento's core_write function like so:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
require_once('../magento/app/Mage.php');
Mage::app();
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->query(" INSERT INTO table_name (`whatever`, `columns`, `required`)
VALUES ( 'corresponding', 'db', 'values')" );
?>
note: the above code assumes you're running yourscript.php in a directory one level above your Magento root folder
One of the most difficult things in working with Magento (I've found) is version controlling its complex database.
Each little adminhtml change queries the database, changing any number of rows and tables.
There are (some) tools out there that can assist you in version controlling databases (check out google for more info), but a simple starting place to see differences between a clean DB of the same Magento version, your production, staging, and or development databases (or any combination thereof) is to simply perform a database dump of the two you'd like to compare and diffing the two dump.sql files:
mysqldump --skip-comments --skip-extended-insert -u root -p dbName1>file1.sql
mysqldump --skip-comments --skip-extended-insert -u root -p dbName2>file2.sql
diff file1.sql file2.sql > diff.txt
note: the output of a database diff can be far too verbose in some more customized situations. I've created .txt diff files before that were over 6 million lines long :(
What development environment are you going to be using? MAMP? LAMP? Ensuring you never email customers is fairly easy, when developing on a localhost site you can control your sendmail settings via the php runtime environment (your first development environment should always be a localhost env. i.m.o.)
URL structure should be coded into the site by using Magento's MVC and Magento/PHP best practice to dynamically call urls i.e.
{{media url="path/to/image.jpg"}}
note: the above would pull image.jpg located at magento/media/path/to/image.jpg