Partitioning does not impact existing code -- it is a change at the physical layer, which the code does not care about. However, if you partition on a date field or something then you may have to maintain that scheme by addinng additional partitions on an appropriate schedule.

Archiving away data will shrink your database, which will make many maintenance tasks faster (restoring a small database is faster than large, etc). However, archiving is not an option unless your data model supports it -- if it depends on being able to query all data since the Beginning Of Time to make some calculations, you can't do it.

Assuming your data model supports it, AND you partition on the archiving key, then archiving becomes as simple as unattaching partitions from one database and attaching them to the other (see transportable tablespaces).