Projects saved with newer versions of Spine have newer features in the project and so cannot be opened by older Spine versions, which don't know about the newer features. The best you can do is use only basic features in the newer project, export to JSON, and then import the JSON into the older version. However, older versions may have different JSON data formats and so the newer JSON may not be accepted by the old version.
There is a JsonRollback tool (source code) that can convert JSON to older versions, but only for some new -> old conversions (3.8.xx to 3.7.94
and 3.3.xx to 2.1.27
). That may be sufficient to go from 3.8 to 3.7 JSON, then see if you can convert that to 2.1.27.
However, using the JsonRollback to modify JSON data to older versions of the JSON format is not a good workflow and we suggest avoiding it if possible. For example, it would be much better to use the latest runtimes, or to open an old version of your project, or to otherwise use the old version to author content that needs to be exported for that old version.
Can you explain your use case? 2.1 is very old (5+ years!).