https://blog.golang.org/slices прочитайте и всё станет понятно.
Если кратко, то ёмкость слайса - длина массива, который хранит элементы слайса. Попросту говоря это Байты оперативки, выделенные под хранение ваших данных. Оно всегда больше или равно длины слайса.
Сам слайс это указатель на какой-либо из элементов в этом масиве (не оьязательно первый) + длина. Это искуственное ограничение, фактически это отрезок массива, в котором что-то записано. При добавлении в слайс нового элемента слайс увеличит свою длину на 1, пооказывая что кол-во данных в массиве увеличилось на 1, а емкость самого массива не изменится, если её хватало для хранения нового элемента. Если же весь массив был заолнен, то слайс просто выделит новый массив в памяти большей ёмкости (обычно в два раза большей предыдущей ёмкости) и перенесёт все данные туда вместе с новым добавленным элементом. При этом, очевидно, сам слайс не изменит своей длины, т.к. Кол-во данных не изменилось, а только поменяет указатель на начальный элемент, т.к. Массив с данными выделен новый по новому адресу в памяти.