how to change priority in ILIKE
I would seem to me, that you want leading matches first, then shortest strings first, and finally alphabetic sort order:
SELECT *
FROM   users
WHERE  username ILIKE '%del%'
ORDER  BY username NOT ILIKE 'del%'  -- leading match first
        , length(username)           -- shorter words first
        , username;                  -- finally alphabetical

db&lt;&gt;fiddle here
NOT ILIKE 'del%' because false sorts before true. See:

Sorting null values after all others, except special

Aside: Never use char(n). See:

Any downsides of using data type “text” for storing strings?