Я не уверен в том, насколько подробные объяснения вам нужны. Примерно так думаю должно быть лучше понятно:
var showingTooltip; // Создадим переменную, в которой будет храниться подсказка
document.onmouseover = function(e){ // при событии "наведение мыши" запускаем анонимную функцию
var target = e.target; // Записываем в переменную target тот элемент, на который наведена мышь
var tooltip = target.getAttribute('data-tooltip'); // Записываем в переменную содержимое data-tooltip, того элемена, на который наведена мышь
if (!tooltip) return; // Если содержимого data-tooltip нет, то ничего не делаем (буквально возвращаем ничего)
// В противном случае:
var tooltipElem = document.createElement('div'); // Создаем новый элемент <div></div>
tooltipElem.className = 'tooltip'; // Устанавливаем элементу класс - class="tooltip"
tooltipElem.innerHTML = tooltip; // Внутрь элемента помещаем содержимое атрибута data-tooltip
document.body.appendChild(tooltipElem); // Вставляем этот элемент на страницу
var coords = target.getBoundingClientRect(); // Получаем в coords все CSS стили элемента, на который наведена мышь
var left = coords.left + (target.offsetWidth - tooltipElem.offsetWidth) / 2; // запишем нужные координаты по горизонтали
if (left < 0) left = 0; // не вылезать за левую границу окна
var top = coords.top - tooltipElem.offsetHeight - 5; // запишем нужные координаты по вертикали
if (top < 0) { top = coords.top + target.offsetHeight + 5; } // не вылезать за верхнюю границу окна
tooltipElem.style.left = left ; // применить к подсказке координаты по горизонтали
tooltipElem.style.top = top ; // применить к подсказке координаты по вертикали
showingTooltip = tooltipElem; // записать в переменную showingTooltip готовую подсказку
};
document.onmouseout = function(e) { // При событии "мышь ушла с элемента", запускаем анонимную функцию
if (showingTooltip) { // Если на странице уже имеется подсказка, то...
document.body.removeChild(showingTooltip); // удаляем ее из DOM (со страницы)
showingTooltip = null; // очищаем переменную, в которой хранилась подсказка
}
};