I've implemented some Paypal stuff and I'm doing my second Authorize.net implementation right now. I would encourage you to also consult the authorize.net forums -- there's a guy named TJ over there who is enormously helpful.
I too am setting up a subscription situation and have been using their PHP library. The library seems pretty solid, but is not especially well documented. I frequently find myself wondering what kind of object a function returns and what methods I may use on that object.
The basic setup is that you should create a sandbox account at http://test.authorize.net and use that while you are developing. You can create customer profiles, customer payment profiles (i.e., a profile that represents a single payment method), and transactions on the sandbox account and no money will change hands. This should let you test out your implementation. When you go live, I would try to make sure you get notified of any transactions that return errors as you will likely encounter situations that you did not encounter during sandbox development (i.e., network timeouts, declined cards, held funds, etc.). If you get notified when an error condition happens, you should be aware of when your customers are encountering problems. Make sure you write a log file (database table or flat file on the file system) so that you can go back and see what sort of error condition caused the problem -- but make sure it is outside the web root and does not contain any sensitive info!
The most helpful sample code you will find for this is in the 'markdown' files distributed with the PHP library. They're in the docs folder. They are by no means complete -- and bizarrely they do not address error handling -- but they will help you get started. You should be prepared to run a bunch of transactions and do a var_dump on the results and check for isOk, isError, getResultCode, and all that stuff on the responses you get.