I just can't figure out what what progress is, is it a database is it a programing language.
It's an application-development platform, with many optional components. Not all components are present in all environments, as CJ alluded to.
If we're going to nitpick, OpenEdge is the name of the platform and Progress is the company that makes it. Though it can be confusing because in 2003 and earlier, Progress was the name of the company and the platform so many people still use "Progress" to describe both.
The components include a relational database (officially called "OpenEdge RDBMS"), a programming language ("ABL", or "Advanced Business Language"; called "4GL" in 2003 and prior), various runtime clients that can connect to the database and run compiled ABL code, and various development products that include compilation capability (e.g. "4GL Development System", "OpenEdge Studio", "Progress Developer Studio for OpenEdge" which is an Eclipse-based IDE, formerly called "OpenEdge Architect", and "WebSpeed Workshop"). If you have a development license installed, it imbues the runtime with the ability to not only run pre-compiled code (object files with ".r" extension) but also to do compile-on-the-fly of source files (typically .p or .w files). This is sometimes also referred to as doing "session compiles" or "running uncompiled code".
This is why CJ asked which products you have installed. If you have some kind of product license that includes a compiler, you can just open an editor and write code similar to what Tom showed you above, and run it directly in the editor. If you don't have a compiler installed, you can only run compiled code (.r files).
writing data into a table isn't going to change the table structure
the only thing that could cause a problem is if a record doesn't conform to the constraints on that field
Correct. You just need to dump the records you need from the source database, using the EXPORT statement, based on whatever record-selection logic is appropriate. Then it's a simple matter to import it into the database from which the records were deleted. Assuming no one has already tried to recreate those records in the meantime or otherwise reuse any deleted unique keys, you shouldn't hit any constraint violations when you load the data.