Вы создали нужные объекты
flashvars и
params, но почему-то не поставили их аргументами в метод embedSWF:

Код:
<script type="text/javascript">
var flashvars = {
link1: "http://www.flasher.ru/?from=flasher",
name2: "world",
name3: "foobar"
};
var params = {
bgcolor: "#ff33ff"
};
swfobject.embedSWF("test.swf", "myContent", "550", "400", "9.0.0", "expressInstall.swf", flashvars, params, false);
</script>
Последнее false - это для объекта атрибутов. Потом может понадобится - например, задать id для управления объектом (сразу задать нельзя - сотрется при формировании флеш-объекта), или задать стили CSS.
Все верно, ничего не нужно изобретать. SWFObject - самое качественное решение для публикации флешки, в том числе и для передачи различных переменных с помощью flashvars.
А вопрос (4) у вас некорректен. С помощью getUrl и ExternalInterface.call решаются другие различные задачи - переход по ссылке и вызов JS-функции соответственно.
Сама ссылка как раз передается с помощью flashvars, а уж как поступить с этой переменной, дело внутреннего механизма флешки - например сделать переход с помощью getURL.