Liczę, że problem rozwiąże najbardziej trywialny sposób, czyli zastąpienie checkboxów inputami typu radio. :) Bo skoro jedno pole musi być zaznaczone, to w sumie po to jest radio.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio
Jeśli musi być checkbox, to najlepiej chyba będzie przelecieć wszystkie checkboxy pętlą z JS i skorzystać z .checked, jeśli jakiś checkbox zwróci true, to zakończyć pętle, a jak nie, to poinformować użytkownika, żeby zaznaczył.
if(checkbox[i].checked)
W PHP możesz po prostu sprawdzić czy został przesłany GET/POST;
if(isset($_GET["name_checkboxów"])){
echo "tak";
}