1. Объяви переменную вне .each. Как-то так:
$(document).ready(function() {
var all;
$('#content_value a[href*=info_village]').each(function() {
var ssil = $(this).attr('href');
all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];
});
$('#content_value a[href*=info_village]').each(function() {
all.push( $(this).text().match(/\d{3}\|\d{3}/) );
});
alert( all.join(" ") );
});
2. Метод .after параметром принимает строку, DOM-элемент или jQuery-набор, а .match возвращает массив (или null, если ничего не нашел). Соответственно, нужно так:
if(coords)
$('#content_value a[href*=info_village]').after(coords[0]);
Если coords === null, будет ошибка, так что проверка обязательна.
Кстати, {1,} - эквивалентно +. По-моему, \d+ по-приятнее, чем \d{1,}.