Your understanding is right.
To be accurate, the current Parser generates both AST and libSyntax tree. But I guess it's difficult to use the current libSyntax tree generation functionality for this task. Currently, it's like a by-product of AST parsing.
"the typechecking and code-generation functionality" == "the rest of the compiler pipe line" here.
For 3, it means:
Serialized libSyntax tree JSON —(JSON deserializer)—> libSyntax Tree —(to be implemented)—> AST —> IL