Question: It is fairly easy to create ABAP program objects using the built-in statements. But what about dictionary objects? There are a lot of function groups related to DDIC, but which ones to use? Or classes perhaps?

Answer: 
Check the function modules RPY\_\* - they are rather complete and reliable (and RFC-enabled :-)).
You might want to check the specific DDIC elements you want to create and have a look at the Plugins of SAPlink <http://code.google.com/p/saplink/> or ZAPlink <http://code.google.com/p/zaplink/>.

Both support a variety of elements and show the usage of functions to create them.