У меня есть абстрактный класс под названием Item и функция
Item
Item function(int x,int y);
мой вопрос: могу ли я вернуть NULL из этой функции?
Поскольку вы объявили возвращаемый тип как экземпляр класса, нет, вы не можете вернуть указатель. NULL (должно быть nullptr) - указатель.
Если Item является абстрактным классом, правильный дизайн функции будет:
Item* function(int x,int y);