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