arm64 and x86_64 are instruction set architectures (ISAs) used in processors designed for different devices. If we wish to execute a certain piece of code on iPhone, iPad devices having A14, A15 etc. chipsets, we need to compile our code for arm64 architecture. Similarly if we wish to run our code on iPhone or iPad simulators running on an Intel Mac, it should be compiled for x86_64 architecture. If it’s a silicon M1, M2, M3 or so, you can compile it on arm64 to make it run on simulator.
When developing an XCFramework and shipping it to be used for everyone, it should be compiled for both arm64 as well as x86_64 so that users of the framework can both run it on their simulators as well as devices. Therefore, a combined framework is created using compiled archives of both architectures. A term is used for this single framework called fat binary or universal binary.