I understand it as follows (but that comes without any guarantee): You can create the file using the NodeService's createNode() method; then you'd get a writer for it using ContentService's getWriter() method and save your file (you have to set the mime-type and encoding, too, by calling setMimetype() and setEncoding() on the writer).
The FileFolderService is built on top of NodeService and ContentService and provides some utility routines for the special case of dealing with files and folders (these are two particular kinds of nodes). This means you can, instead of using the NodeService and ContentService, also use the FileFolderService.
Hope this help,
Kaspar