You can use sortedBy, it works on Boolean values, but false values are first:
val list = listOf("nope", "abc", "abcd", "bacon", "abba", "bob", "something")
val sorted = list.sortedBy { it.startsWith("ab", ignoreCase = true) }
println(sorted) // [nope, bacon, bob, something, abc, abcd, abba]
If you want true values first, you can use the ! operator inside sortedBy.
Note that if you need this 2 sublists independently as well, you can use partition instead of 2 calls to filter, so that each item is only tested once:
val list = listOf("nope", "abc", "abcd", "bacon", "abba", "bob", "something")
val (matchingItems, nonMatchingItems) = list.partition { it.startsWith("ab", ignoreCase = true) }
println(matchingItems) // [abc, abcd, abba]
println(nonMatchingItems) // [nope, bacon, bob, something]