Как использовать сериализацию?
Объясню несколько абстрактно. С конкретными терминами определитесь сами. Предположим, у вас есть некий объект. Пусть это массив. Это сложный тип данных. 
Сериализация позволяет привести этот объект к последовательности байтов (часто ее можно рассматривать как строку, созданную по определенным правилам), которую в дальнейшем можно десериализовать, то есть получить из нее исходный объект. 
Для чего это нужно? Сохранить сложный объект где-либо. Например, в единственном поле БД, в сессии, в куках, просто в файле. С возможностью получить исходный объект в дальнейшем. 
Или для передачи. Допустим, вы собрали данные от пользователя с некоторой формы, получив массив данных. Эти данные надо отправить на сервер. В качестве параметра запроса может выступать строка, но не массив. Поэтому перед передачей массив необходимо сериализовать.Как использовать. Там есть и от майкрософта статьи, и вполне разжеванная от code-inside. В общем, на любой вкус. 
А ваши комментарии о том, что интересует сериализация именно на C#, несколько неуместны. Очень многие термины и процессы в программировании мало изменяются от языка к языку. Различается лишь синтаксис и способы использования. Сама суть сохраняется.
Вики пишет что сериализация это "процесс перевода какой-либо структуры данных в последовательность битов". И обратная сторона - десериализация.
Если вам нужно передать сложный объект с помощью какого-либо транспорта (файл, TCP-IP соединение, и.т.д) вам надо ваш объект на одной стороне перевести в последовательность байт, а на другой стороне восстановить из последовательности байт. Это и есть сериализация - десериализация.
Во всех ЯП сверхвысокого уровня типы C#, Ruby, Python и т. д. есть встроенные механизмы сериализации, но иногда разработчики переопределяют методы сериализации \ десериализации для каких-то своих целей.