Как вы думаете - значения каких типов возвращают методы val и attr? Ну, не получается ли так, что вы сравниваете вовсе не числа, а строки? Знаете как строки сравниваются?
UPD. Есть и ещё косяк, не столь явный. Раз числа в input'ах задают интервал, то они не могут быть произвольными - первое не должно быть больше второго. Надо бы этот момент учитывать - получать оба числа, проверять, как одно соотносится с другим, при необходимости менять их местами. Как-то так (да, к чёрту focusout, зачем что-то делать, если не было изменений?):
$('.check-input').change(function() {
const $wrapper = $(this).closest('.filter-character-slider');
const $slider = $wrapper.find('.slider-range');
const $inputs = $wrapper.find('.check-input');
const values = $inputs.get().map(n => $(n).val() | 0);
if (values[0] > values[1]) {
values.reverse();
}
values[0] = Math.max($slider.attr('data-min'), values[0]);
values[1] = Math.min($slider.attr('data-max'), values[1]);
$inputs.val(i => values[i]);
// здесь ещё должна быть установка значений для слайдера,
// но, поскольку вы не сказали, что за плагин используется,
// то это уже вам виднее, как тут действовать
});