What I was recently disappointed to find out is that you can't have a separate "display name" for the option items.  That is, when the user clicks and the dropdown opens, I want the item labels in the dropdown to be of the form "$TITLE ($SHORT_DESCRIPTION)", but then when the dropdown is closed and something is selected, the control should just read "$TITLE".  There are a few hacks to sort of make that work, but they all have downsides that make them unusable for me.  (The purpose for me was to make it so the <select> element doesn't take up as much horizontal space; most of the workarounds end up missing that quality.)
There was one thing that I hoped would work, but didn't, which is applying an :after pseudo-class to <option>, so something like this:
    option:after {
      content: ' (' attr(data-descr) ')';
    }
    <select>
      <option data-descr="some description">Foo</option>
      <option data-descr="some other stuff">Bar</option>
    </select>
Unfortunately this just doesn't work (I presume because <option> can't contain DOM elements aside from unstyled text), but I wonder if it will work now.