It's possible to register global functions and global properties that can be used directly by the scripts.
For more complex scripts it may be useful to register new object types to complement the built-in data types.
AngelScript doesn't have a built-in string type as there is no de-facto standard for string types in C++. Instead AngelScript permits the application to register its own preferred string type, and a string factory that the script engine will use to instanciate the strings.
Class interfaces can be registered if you want to guarantee that script classes implement a specific set of class methods. Interfaces can be easier to use when working with script classes from the application, but they are not necessary as the application can easily enumerate available methods and properties even without the interfaces.
enumeration types and typedefs can also be registered to improve readability of the scripts.