The first part is pretty simple as CK has pointed out.
Rich text formatting is dictated by certain predefined codes as defined in the RTF specification.
First get the underlying RTF raw string from the control using the RTF property
string rawString = richTextBox.Rtf;
For eg: the rtf for the phrase 'hello Bobby' will look like this. It is something like HTML, you have tags which define the formatting.
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17 hello Bobby\\par\r\n\\par\r\n}\r\n"
Now suppose I want to make the phrase bold, I would set the Rtf property by replacing the string with
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17
\\b hello Bobby\\par\r\n\\par\r\n}\r\n"
Note the \\b before the phrase. That's the code to make a given text bold.
To perform this formatting using code, find the string you want to format(using the first technique) and insert the rtf code in the required position.
Hope this helps.
For the codes refer MSDN http://msdn.microsoft.com/en-us/library/aa140277.aspx
PS: Jeff's version is the easy one. This verison gives you infinite control. If you can do something in WordPad, you can do the same using rtf codes.