Проверьте официальные документы MSDN, здесь есть полный список строк формата DateTime:
msdn.microsoft.com/en-us/library/az4se3k1.aspx. На самом деле существует немало "магических" строк.
Насколько я знаю, не все типы имеют "интересное" форматирование, но все типы поддерживают ToString(). Если вам нужно отформатировать встроенный объект, вы можете добавить метод расширения для этого, но обычно форматирование предоставляется в любом месте, где это необходимо (или, говоря другим способом, у меня есть только собственные пользовательские форматирования для моих собственных типов).
Да, вы можете написать свой собственный, и если у вас есть данные, которые могут быть отформатированы по-разному, вы, вероятно, должны написать собственный форматировщик, выполнив IFormattable, снова просмотрите документы здесь:
msdn.microsoft.com/en-us/library/system.iformattable.aspx. Это довольно просто, вы просто проверяете предоставленные строки и записываете свои данные на их основе, там нет волшебства за кулисами: -)