Не претендую на истину в последней инстанции, но в моей голове это выглядит так:
Абстракция - это некоторое обобщение. Например, есть кошка, собака и попугай. Мы можем ввести абстракцию "домашние животные". Добавив в эту конструкцию волка и рысь мы можем ввести абстракцию "дикие животные". А затем ввести абстракцию "животные". А затем "живые существа" и т.д.
В объектно-ориентированном программировании абстракции принимают форму абстрактных классов и интерфейсов.
В обобщенном программировании абстракции принимают форму шаблонных классов и функций.
В функциональном программировании абстракции принимают форму функций высшего порядка.
"Чистая выдумка" - с моей точки зрения это не абстракция, это лишь способ выделения ответственности в отдельный класс. Но эта самая ответственность вполне конкретна.
Классы - тем более не абстракция. При любом моделировании мы переносим в модель существенные черты моделируемого явления (системы) и отбрасываем несущественные. То о чем вы говорите - неизбежная потеря деталей при построении модели.