First, you should probably consider joining the mailing list as there is a lot of useful information there from other NM hackers: http://mail.gnome.org/mailman/listinfo/networkmanager-list.
Second, read the Design Goals of NetworkManager to get an idea of why things work the way they do.
NetworkManager requires the GNOME gnome-autogen.sh script, found in the 'gnome-common' SVN module. Grab that and install it, if you don't have it already:
svn co svn://svn.gnome.org/svn/gnome-common/trunk gnome-common
cd gnome-common
./autogen.sh --prefix=/usr
cd macros2
make
sudo make install
Next, grab NetworkManager from SVN HEAD. To checkout and build from SVN HEAD:
svn co svn://svn.gnome.org/svn/NetworkManager/trunk NetworkManager
cd NetworkManager
./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
sudo make install
And if you want to play with the applet, you need network-manager-applet, too:
svn co svn://svn.gnome.org/svn/network-manager-applet/trunk network-manager-applet
cd NetworkManager
./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
sudo make install
If you make changes to NetworkManager, create the patch using a Unified diff format (ie, diff -u) and mail the patch to the NetworkManager list. Others on the list may make suggestions, please take these into consideration. Eventually, your patch can be checked into NetworkManager SVN.
The most up-to-date list of work items is kept at the live.gnome.org Wiki here.