The AbstractUser - это в основном просто класс "Пользователь", к которому вы, вероятно, уже привыкли. AbstractBaseUser делает меньше предположений, и вам нужно сказать, какое поле представляет имя пользователя, какие поля необходимы и как управлять этими пользователями.
Если вы просто добавляете вещи существующему пользователю (т.е. данные профиля с дополнительными полями), используйте AbstractUser, потому что это проще и проще. Если вы хотите переосмыслить некоторые предположения Django об аутентификации, то AbstractBaseUser дает вам возможность сделать это.