I think xcode 3 uses the latter, and xcode 4 uses the first.
Are they interchangeable?
.xcdatamodeld is a container for .xcdatamodel files. It is used for version control and migration. When moving a model from v1 to v2, you add a new xcdatamodel to it, which has v2 along with the display model.