Can you please explain or share some useful links about how opensea manages to validate royalties amount and addresses? I was exploring seaport contract for a while and didn't get answers. The simplest case is "fulfillBasicOrder". This function has a lot of validations but I didn't find there how it validates additional recipients so it just makes ERC20 transfers through for loop with address and amount that came from an external source. I mean I can recreate EIP712 structure that uses opensea, fill additional recipients with needed addresses and sign it without using opensea UI, and similarly send transaction to fulfill basic order. - it is just my thoughts and I firmly believe that I am wrong just didn't find needed file. Does royalty data have to be validated on behalf of smart contract or smart contract can only validate the signature and then make all needed transfers?
It seems like your confusion here is mostly about how orders actually work. There is no section of Seaport that handles royalties specifically. The "address and amount that came from an external source" are part of the order, the same as any fee. When ever an order is created using OpenSea's front end, API, or some other marketplace building on top of seaport, you get to choose all the parts of the order to be fulfilled. That signed order is stored off-chain and includes an offer, for example it could be "User Alice sells 1 tubby cat with id 123, Alice receives 0.1 eth, tubby cat owner address receives .01 eth, opensea address receives, .005 eth". When the order is fulfilled each part of it is executed and it's someone meeting the offer. The royalty amount is calculated by the front end, or API, etc. and added as one of the parts of the offer.
Check out the structs section, you might find the OrderComponents comments really helpful: https://github.com/ProjectOpenSea/seaport/blob/main/contracts/lib/ConsiderationStructs.sol
You can take a look at how royalties work in OpenSea and Seaport overview: