Ответ 1
QVariant используется для хранения ссылок на значения, где вы не всегда знаете, что внутри. Это способ создания API, который может принимать "что угодно" в качестве ссылки на неизвестный тип. IE, вместо того, чтобы иметь API, который принимает длинный, а другой для int, а другой для float, а другой для строки, вы можете иметь один API, который вместо этого принимает QVariant.
Затем внутри более сложной функции, где вам нужен определенный тип (например, в QSettings), вы можете извлечь именно то, что вам нужно из Variant, после его возврата.