Should I tell my boss (a) that I refuse to enable incompetence; and (b) that assigning non-programmers to projects where programming skill is required is dangerous?
Refusing to perform the tasks assigned to you is seldom a wise career move. And virtually every job description I've ever seen included something along the lines of "... and other tasks as assigned."
Should I report this situation to HR?
It's extremely unlikely HR would put itself in the middle of this.
Instead, speak with your boss. Explain how busy you are and why you think the choice to use "non-programmers" is dangerous.
If you are still bothered that much by this practice, it might be time to find a new job and leave this one.