The only answer I find seems to be the ant undeploy tool, but this requires an xml specifying the changes, + we've never worked with it before. Is there any way to completely reset a production org when you don't have an exact list of things to be removed? Or is it possible to generate a list of all the changes so we can use the ant tool?
Before deploying major components to your production ORG it is always a best practice to refresh a developer sandbox or take a backup of all the components in your production ORG prior to deployment. You could also use version control tools to revert back to older version whenever necessary.
If you are using ANT, you need to know all the old components and new components which are being deployed but if you are using Eclipse IDE, use the same package.xml while taking the backup and for deployment.