Your question is incomplete, since there are no state (storage) variables in the given code.
There is only a type (struct) definition.
Hence the answer depends on where exactly a state variable of that type is allocated in the contract.
For example, in this contract, it is safe to extend the MainStorage struct:
contract ExampleV2 is UUPSUpgradeable, Initializable {
uint256 private a;
uint256 private b;
MainStorage private c;
}
While in this contract, it is not safe to extend the MainStorage struct:
contract ExampleV2 is UUPSUpgradeable, Initializable {
uint256 private a;
MainStorage private b;
uint256 private c;
}