the Serializer interface is the one you need to implement. You can use JavaSerializer as an example.
The SerializedObject interface (and the SimpleSerializedObject implementation) are used to describe the serialized form. This object contains the actual bytes, String, InputStream, or whatever the data is serialized to, as well as some information about the type of object and version that was serialized. The latter two properties are captured in the SerializedType.
The ConverterFactory can be used to convert a SerializedObject that contains, for example, a byte to one that contains an InputStream or event String. Converters are commonly used when using upcasting. In such case, a serializer may be asked to serialize from, for example, a JSON object. If the serializer cannot handle JSON directly, but expects a byte, it can use a converter to convert between these types.
Hope this helps.