You’re providing the prefab’s own rotation as the rotation to set, and you’re making it a child of another object. The rotation shown for the instantiated object will report in relation to its parent in the inspector (local rotation, not world rotation). Usually you would want to set the rotation to something that exists in the game world already, not against a prefab in the asset’s folder.
If this is something like a gun being mounted to an arm, I’d set an empty GameObject to act as a mount. Then when you instantiate you set the mount point as the parent, and just zero out the instantiated object’s local position and local rotation (or just set them to the mount point’s world position and world rotation).