Теги внутри тега < a >
есть два типа тегов - inline и block (строчные и блочные). Внутри блочных могут быть любые. Внутри строчных - только строчные.
Теги a, span, i, b, strong, em и т.д. строчные, а div - блочный.
Вывод - это нормально, но только если элементы являются строчными (то есть из приведенных вами только span).
Хотя стандарт HTML5 позволяет и такое делать, так что если у вас проставлен соответствующий doctype, документ останется валидным.
Можно, не бойся.. Только все что внутри тега будет ссылкой.. Иногда это плохо.
А бороться с блочными и строчными можно при помощи css.display:block-inline к примеру.