In their simplest form, do programs just run terminal commands?
Conceptually, it always uses OS API - the question is only in what way. There are essentially three options.


using low-level OS API (system calls) directly. In your example the task is quite involved: get the list of items in the folder, check the type (folder, file ...), for each of them create the corresponding item in the target folder, for files read the content from the source, write to the target file etc. Since the task is so complex, it is easy to get something wrong, so most applications will avoid this.
use a library (API) that simplifies the task. For example the Apple Cocoa framework provides NSFileManager class with the copyItemAtPath:toPath:error method which does all the dirty work using low-level OS API, so the application doesn't need to use low-level API itself but can rely on something that requires less work and is always present in the system. Also Apple is likely to make sure that it works well.
use an external process to do the task. In this case the external process will be using one of the two methods above to do the work. The application has to start such process, monitor it and wait until it is done. It is likely that such process can be run as a command line tool, so this would likely be a command you can run in Terminal. It is not guaranteed, but very possible.


Most applications will use option 2. because it is more simple than 1. and more safe and efficient than 3. In order to run an external process you need to set it up properly and you have no control over what it does. For example it is much harder to figure out what exactly went wrong in case of a failure and it is hard to know what it is doing (e.g. show progress). That is why in most cases developers will likely choose option 2, but there is no guarantee. A notable example are applications that use shell scripts for customization - such as installers.

Advanced user note: you can use dtrace facility of OS X to find out what a particular application is doing. For example, you can check any processes it is spawning so you would see the tools it is using (see execsnoop).