name - уникальное название элемента, используется в связке с html (якоря, iframe), js(взаимодействие) , php (формы) .
id - уникальный идентификатор для стилизации (css) и взаимодействия (js).
на атриьут name стиль не привяжешь, в формах передаются данные из name
В форме при передаче запроса (GET- или POST-) передаются параметры, соответствующие неймам input'ов в форме, со значениями этих input'ов.
А еще по name, вроде, иногда можно обращаться к элементу как к переменной.
myname.innerHTML = "F";
как во многих десктопных ООП-языках.
Но так не везде, не то тоже в form, не то еще где-то.
Это специальные атрибуты, служат для разных целей, у них разные свойства.
К примеру, в css легко можно выбирать элементы по id - #id, они же служат ссылками для якорей, а name используется для передачи данных из форм.
name нужен для PHP (напр. для обрабоки формы на серваке) , а id (или class) для CSS стилей (т. е. как она будет внешне выглядеть на странице)