With AllowPrivateAccess, one can create classes with private C++ data (hidden from non friend classes) while allowing Blueprint derived classes to access it. I tend to use this to encapsulate data in C++ but make available in a read only manner in blueprint, reducing the number of getter and setter functions.