Как работает std::list?
Произвольный доступ - это доступ по индексу, с константной сложностью (O(1)), когда вычисляется смещение и мы можем сразу перейти к нужному элементу, как в std::vector через [] или метод at(index).
В std::list, чтобы попасть (вставить, удалить и т.п.) куда-то в середину, мы должны в это место попасть, попутно обойдя все ниже(выше) лежащие элементы, один за другим. Это достаточно медленно (O(n)). Но сама вставка будет дешевой в любом месте (O(1)).
Лист - не упорядоченный в памяти массив, связь между элементами осуществляется путем сохранения указателя на следующий и/или предыдущий элемент. При удалении или добавлении элемента всего лишь меняются эти самые указатели - это объясняет "поддерживает быструю вставку и удаление элементов из любой позиции в контейнере".
"myList.emplace(it, 5, "Value"); " отработает следующим образом ( условно )
auto item = new ItemType( 5, "Value" );
item->next = it->next;
it->next = item;
Быстрый произвольный доступ - подразумевает доступ к N элементу за константное время. Лист же предоставляет доступ лишь за линейное время, т.к. для доступа к N элементу необходимо перебрать все предыдущие элементы.