Punto primo:
Puoi usare l'attributo required anche per i checkbox
codice:
<input type="checkbox" name="checkbox" value="si" required>
Punto secondo:
Se vuoi usare l'attributo required sui tag select, una delle option deve avere un value nullo.
Spiego con un esempio:
La select seguente supererà sempre la validazione che fai tramite required perché entrambe le sue option contengono un value.
codice:
<select name="datipersonali" required>
<option value="Non Acconsento">Non Acconsento</option>
<option value="Acconsento">Acconsento</option>
</select>
Mentre sulla select seguente l'attributo required impedirà l'invio del form se è selezionata la prima option.
codice:
<select name="datipersonali" required>
<option value="">Non Acconsento</option>
<option value="Acconsento">Acconsento</option>
</select>
Nota il value "vuoto" sulla prima option