An opportunity is a deal record in GoHighLevel. Each one is linked to a contact, sits in one stage of one pipeline, and carries a name, monetary value, status (open, won, lost or abandoned), assigned owner, source and any opportunity custom fields you've added. One contact can have several opportunities, for example in different pipelines or for repeat business.
Opportunities are separate records from contacts. Opportunity custom fields are created under the opportunity object, not the contact object, and use their own keys.
In practice
You work opportunities from the Opportunities page, usually in the board (Kanban) view where each column is a stage. Drag a card to move it, or let workflows do it: a form submission creates the opportunity, a booked appointment moves it forward, a signed contract marks it won. The "Pipeline Stage Changed" and "Opportunity Status Changed" triggers let workflows react to moves.
Two daily frictions come up. Opening a card to check the contact's details takes you off the board, which slows down reps who move through many cards. And opportunity data gets left behind in exports and backups, since opportunity fields and files don't travel with a simple contact export.
Where it shows up in RGS Tools
Power-Ups' Contact Peek opens a contact in a window over the Opportunities board, so reps don't leave the board. Sub-Account Manager's bulk field creator creates contact and opportunity fields in one run. Backup & Insights's file backup ties each backed-up file to its contact, opportunity or conversation in the manifest.