Here is a demo query, notice it is very simple, Fetches only where base_price is 0, And still, it chooses the condition 3:
SELECT
CASE course_enrollment_s
There are two variants of CASE, and you're not using the one that you think you are.
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
Each condition is loosely equivalent to a if (case_value == when_value) (pseudo-code).
However, you've put an entire condition as when_value, leading to something like:
if (case_value == (case_value > 100))
Now, (case_value > 100) evaluates to FALSE, and is the only one of your conditions to do so. So, now you have:
if (case_value == FALSE)
FALSE converts to 0 and, through the resulting full expression if (case_value == 0) you can now see why the third condition fires.
Drop the first course_enrollment_settings so that there's no case_value, causing MySQL to know that you intend to use the second variant of CASE:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
Now you can provide your full conditionals as search_condition.
Also, please read the documentation for features that you use.