В принципе, вкратце этого не объяснишь, тем более что многое зависит и от текста, и от поставленных задач, и от количества ключей. Но если попробовать все же скомпоновать основные рекомендации, то на примере одного основного ключа - его надо ввести в первый абзац не далее третьего предложения. Повтор его же - в середине текста и ближе к концу. Не начинать предложение с ключа и не заканчивать им. Не разбивать точкой, другими знаками препинания допустимо.
Если ключей несколько - не пихать два однокоренных ключа не только в соседние предложения, но и вообще в один абзац, равномерно по смыслу раскидать их по тексту. Если ключи отличаются, не содержат общих слов - допустимо использование двух в одном абзаце, если они удачно вливаются по смыслу текста.
Но в любом случае слишком много ключей, содержащих в себе одни и те же слова, могут привести к пессимизации текста ввиду нового алгоритма от Яндекса - Баден-Баден. Поэтому лучше использовать синонимизированные и разбавленные.
ВКонтакте и Одноклассники. Именно в них сидит основная масса русскоязычного населения Интернет. Естественно, ВКонтакте те, кто помоложе, а в Одноклассниках - люди постарше, в основном.
Можно ещё и Мой Мир@Mail.Ru прихватить.
Контент должен быть не только уникальным, но и интересным для большинства посетителей. То что уникальность классно индексируется поисковыми системами, и Ваш сайт в топе раздач поисковых систем продвигается все выше и выше, это пол дела. Здесь надо еще и удержать посетителя (который например пришел из той же поисковой системы) подольше, что бы ему было интересно, и он возвращался на сайт вновь и вновь.
Ставить к вопросу о тегах HTML пометку "продвижение сайта" всё равно что пометить надписью "реклама на авто" статью о разных вариантах двигателя, что завод может поставить на одну и ту же машину. Где внутренняя структура и где хахаряшки?
Списки относятся к разметке гипертекста. OL - нумерованный, UL - ненумерованный. Закрывать теги нужно. Внутри создаётся элемент списка тегом LI (list item), закрывать тоже не помешает.
Для кода
Видимый результат будет таким:
У нумерованного списка метка элемента будет численная, по порядку возрастания. У ненумерованного - символьная, одинаковая для всего списка. Также по умолчанию создаётся отступ. Всё это, разумеется, можно настроить через атрибуты тега или через стили, было бы желание.
Для начала, неплохо было-бы разобраться в HTML (правда, он не является именно языком программирования - это язык разметки) и JavaScript.
В принципе, для базового уровня в SEO этого должно хватить.
Для более продвинутого - Perl, PHP, различные диалекты SQL.
Это то, что касается языков. Что-же касается навыков, то в первую очередь - это механизмы работы поисковых роботов и краулеров. Нужно очень хорошо понимать принципы работы и различия поисковых систем и систем агрегации контента. Вообще, по данной теме есть достаточно много интересной литературы, например вот эта книга.