To complement @Berraba's response, I'll leave a opinion on the subject:
In addition to the official CSS specifications use dashes, I believe dashes is also recommended for code conventions, eg:
pseudo-elements: first-letter
, first-line
... pseudo-classes: :first-child
, :nth-child
... > properties: text-decoration
, background-color
, and etc ...
Note that the second option below looks better written in language
.minha_classe:first-letter {font-size:300%;}
.minha-classe:first-letter {font-size:300%;}
It may be difficult to notice in this simple code, but imagine in hundreds or thousands of lines written in the first way.
Now imagine when we use Bootstrap for example, to add a specific class to the code, eg:
<div class="col-lg-12 minha_classe"></div>
<div class="col-lg-12 minha-classe"></div>
Again it seems better to use dash.
Now a curiosity not related to CSS doubt, according to this matter Dashes vs Underscores until recently, Google treated words separated by underscore (css_html) as a single word and words separated by dash (css-html) as distinct words. This is why it is very common when we work with friendly url using dash instead of underscore.