Feedback in the interface is always a good idea. The user needs to understand what's going on now at any given time. It's good to make the inputs have a focus state. It helps to navigate the form and the current action.
A good error message must not only explain what the problem is but also tell the solution. The user should always understand what's going on and how to fix it in the fastest possible way. So you reduce the likelihood that he will stop and refuse to fill out the form.
The rule for single checkboxes is slightly different than other inputs. The checkbox label contains a description of the expected data, so if a checkbox is not selected, this can be indicated by a red border without additional explanations.
Showing an error message can be useful in the checkboxes group, especially if it explains why these are required fields.
Radios do not require error messages because they should always have a default choice.
The text on the radio or checkbox label should also be disabled if the input is disabled. If the label does not have reduced transparency, it becomes unobvious that the input field is disabled.