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 ...
Nagios is generic monitoring solution which can be extended by using snmp agents, custom plugins and so on.
Cacti is a complete frontend to RRDTool, it stores all of the
necessary information to create graphs and populate them with data in
a MySQL database
Cacti can be used as graph solution in Nagios to represent in graphic manner ...