Не упускаешь ничего.
Все то же: data(), setData(), flags() и QModelIndex.
В принципе, меня эта система устраивает, единственное, что я бы добавил - это возможность использовать строку вместо enum для указания роли.
Хотя я сейчас делаю в основном так:
QWshWorksheetCell* cell = data(index, Qt::UserRole).value<QWshWorksheetCell*>();
И дальше в коде (будь то делегат или же в модели) работаю уже напрямую с объектом, поэтому 100500 разных ролей уже не использую (только UserRole, EditRole и UserRole как раз для указателя на объект).