That description of public vs. private symbols in MSDN is strictly about native PDBs. For mangaed code there isn't really any such thing as "public symbols" (or you could say that the "public symbols" are what's in the metadata alone without any PDB info). As Mike said, everything that is considered "public symbols" in the native world (and much of what is considered private too) is in the metadata of managed DLLs. So to a rough approximation managed PDBs are really just about source-line mapping and local variables (since that's all that's missing from the metadata).
That said, you can actually store whatever additional detail you want in PDBs using the symbol custom attribute mechanism. But probably what you care about is what information can you store which an existing debugger would know how to read and interpret (I'm assuming you'd like to avoid writing your own debugger / debug engine for Dylan.NET). Really the definition of the ISymUnmanagedWriter API is the specification for what the Visual Studio Debugger (and so also DbgClr which is a subset of the VS code) can read. Eg., in addition to locals/source there's also using info (so expressions in the immediate/watch window can take into account the 'usings' that are active in C#). There's also a few extra things that C# 2.0 stores as a symbol custom attribute specific to some of the transforms it does (iterator methods, display clases, etc.) but I don't think these are documented or particularily useful for any other language to leverage (although I could probably get you details if you're interested).
I hope this helps.
Rick