What you're specifically giving up depends on which features you have enabled in your org. A non-exhaustive list of potential features, off the top of my head: Territory Management, Dated Currency Rates, Customizable Forecasting, Sales Teams, Competitors, Partners, Contact Roles, some types of Sharing, Stage History, some types of reporting, Campaigns (e.g. ROI and Campaign Influence), Price Books/Pricing, Lead Conversions, Quotes, Quotas, Products, and a number of quality-of-life features you'd have to build if you want them. Some of these features you can replicate in code, some you cannot. For all the "core" objects (Account, Contact, Lead, Campaign, Opportunity, etc), I'd strongly advise trying to purpose them to meet your needs. Going custom is likely going to cost you in the long run, so I would consider the situation carefully before doing so. Note that I'm not saying "never, ever do this", just a strong word of caution; it would be easier to try and make it work than go with a custom object.