Le singole regole vengono sovrascritte.
Anche l'ordine nel CSS ha la sua importanza.
Ad esempio se definisci:
span.pippo {
color: red;
font-size: bigger;
}
span {
color: blue;
}
tutti gli span appariranno di colore blu, compreso quello con class="pippo".
Invece nello span pippo, il font sara` leggermente piu` grande che nel testo dell'oggetto in cui lo span e` contenuto; tale regola si applica solo al pippo, e non e` stata sovrascritta dall'altra.
Le regole che hai citato si comportano allo stesso modo: e` come se quelle piu` interne fossero lette dopo le altre.
Dal punto di vista tecnico, quanto hai scritto va benissimo.
In uno stesso oggetto si possono anche definire piu` classi:
<p class="testoArial pippo' ...>
dove pippo potrebbe essere una cosa simile a quella sopra.
Dal punto di vista della separazione del contenuto dalla formattazione invece i CSS "inline" sono sbagliati; il mio consiglio e` di non usarli, salvo per scopi particolari.
Esempio:
<div style="display:none;">
testo nascosto</p></div>
dove poi un JS abilita il testo in particolari circostanze.
In questo caso lo stile applicato non presenta una caratteristica di presentazione, ma serve ai fini di una funzionalita`.
(NOTA: considerazioni sull'accessibilita` del JS a parte).