Sounds like you're making good progress! To answer your questions:
1. Your get_text() function should return the markdown as text, with formatting removed. The result of get_text() is primarily used in notification emails (which don't currently support HTML) and for search indexing. To preserve newlines and the like, you might actually find it easiest to take your HTML rendered version in $html, and convert it to $text like so:
$text=$viewer->get_text($html, 'html', array());
(This uses Q2A's default viewer to perform the conversion - it takes care of things like mapping <LI> to a newline.)
2a. If you want to output any sort of structured HTML (say in $html) for the field, you should return an array of this form from get_field():
array('type' => 'custom', 'html' => $html)
BTW, you can also add a 'note' element to the field if you want to display a short explanation of how to use Markdown below the field. Or you might choose to include that within $html itself - see how it looks.
2b. Your read_post() function should return whatever it is you want stored in the database, to enable your viewer module to work correctly. Based on what you've said, I think something like this is probably right:
array('format' => 'markdown', 'content' => qa_post_text($fieldname))
where your editor used $fieldname for the name of its HTML field.
Let me know if any other questions pop up - this is also very helpful for me to understand how to improve the plugin documentation.