Why does the opportunity show only some custom fields?
When you open a contact or an opportunity, the Custom fields section shows only the fields that already have a value. The record stays short and you see right away what has been filled in.
To see every field, including empty ones, turn off Show only filled at the top of the section. When no field has a value yet, the section shows the empty state with View all fields, which does the same.
In the opportunity's Custom Fields tab
The opportunity's Custom Fields tab lists the opportunity fields and, below them, the Contact fields. A single switch, Only fields with a value, at the top of the tab applies to both lists: on, both show only fields with a value; off, both show every field.
In the contact panel
In the Profile block of the contact panel (Live Chat and the contact page), the Custom fields section has the same Only fields with a value switch next to its title. With it on and no field filled in, the section shows the empty state with View all fields.
The choice is not saved
The filter (Show only filled or Only fields with a value) is turned back on every time you open a contact or an opportunity. Turning it off lasts only while that record is open. This way everyone on the team sees the same short record when opening it.
Records of a custom object work differently: they open showing every field, and your choice is kept in this browser.