How does Cacti compare to Nagios?
While Romeo has laid out the basic facts I'd like to add a bit of experience to the answer:


Basics Cacti is focused on graphs.  It doesn't do any of the up/down monitoring that is provided by something like Nagios.  Classically Nagios does not provide any useful graphs, but more on that later.
Config Scaling Cacti tends to be configured through the GUI manually.  Eventually you will hopefully scale enough to find this frustrating.  I've switched to Munin in places where there's lots of configuration management and it is easy to turn a server inventory into a config file with templates.  Nagios tends to be configured with config files so hopefully you script the translation of your inventory in that format too.  Then you can scale to thousands of nodes without redesigning your monitoring system.
Distinctions blur. The classic distinction between Cacti/Nagios of graphing vs up-down status has been blurred in a number of Nagios derivatives.  Icinga and OMD, for instance, integrate graphing into a Nagios-style monitoring architecture.
Plugin Availability Doing something in the Nagios world gives you access to tons of well tested plugins to monitor almost anything under the sun.  Cacti also has plugins, but not nearly as many.


So obviously my Cacti experience hasn't been that great and I'd recommend you look elsewhere for your long-term graphing needs.