Za każdym razem, gdy używasz funkcji dla kolumn, musisz przypisać im alias. Powodem tego jest to, że możesz używać wielu kolumn w funkcji, a MySQL nie będzie automatycznie wiedział, której użyć w wyniku pojedynczej kolumny, i wygeneruje nazwę kolumny podobną do używanej funkcji.
Rozwiązanie, na które się natknąłeś, jest absolutnie słuszne. Jednak ze względu na czytelność zalecane jest używanie aliasów i nazw kolumn.
Twoje zapytanie powinno więc brzmieć tak:
SELECT
SUBSTRING(LEFT(configuration,
LOCATE('abhol_firma', configuration) - 30),
LOCATE('treuhand_betrag', configuration) + 22,
100) as configuration /* note the alias here */
FROM
tl_iso_product_collection_item
WHERE
LOCATE('abhol_firma', configuration) > 0
AND LOCATE('treuhand_betrag', configuration) > 0
ORDER BY id DESC
LIMIT 1