Would you be able to make an anonymous struct, without putting it in a protocol type, and access the properties of it?
Why would you want this? You can do that with tuples already.
What if you have more than one anonymous struct, but in a single expression? Would it just complain that I try to put two different types as keys in a single dict?
Yes, here you have two anonymous structs in different code points, so they different types, even if structurally they look the same. But you can use different types in the same data structure if they are wrapped into existential containers.
Would the different instances made at the same point in the source code will be considered the same dynamic type?
Yes.
What if it's generated in a generic context? Probably not
Currently it is not possible to declare local structs inside generic functions - Could some types be allowed to be nested in generic functions?
. There are no strong reasons for that, it is just something not implemented yet. When it will be implemented local structs inside generic functions should behave as generic structs - if they are parametrised by the same types they are the same types, by different - different types.