I want to use the "object" - Opportunities to add our sales data into Marketo (I want to use this data in a variety of ways, such as removing people from our emails who recently made a purchase).
I cannot figure out how to import these using the interface, and I think you can only do it through their API. Is this true? Any insights would be extremely helpful.
If you are integrated with SFDC or Microsoft Dynamics, that data should already be available. If not, and if the database you're pulling from doesn't support it's own integration with Marketo, you would indeed need to pull it in using an API. http://developers.marketo.com/rest-api/lead-database/opportunities/.
However, that's something you would need a qualified developer or technical consultant to do.
Continuing from Grant's answer, note that Marketo Opportunities are added via Opportunity Roles (Opportunities themselves are a form of 2nd-level object, as is also true in Salesforce btw).
Depends on the dimensions you need (and your developer resources).
In many cases, I do recommend using lead fields instead of COs, specifically using Textarea fields that hold JSON objects -- you can hold hundreds of "poor man's custom objects" in a single field this way, and get some needed flexibility (for example, you can display these objects on Landing Pages, which you can't with "real" COs).
However, in the specific case of the built-in Opportunity and Opportunity Role (as opposed to wholly custom objects) you get a lot of reporting power from them, and I wouldn't present lead fields as equivalent. Even at their most complex, lead fields can't do many-to-many (while an Oppty can have multiple people attached to them via the Oppty Role, again if that's what your model requires).