Extreme use of pointers in adjacency list graph construction?
Am I going too far/extreme trying to place data onto the heap?

Yes. Containers like std::unordered_map and std::forward_list already store contents on the heap. If you declare a std::unordered_map on the stack, only a little bit of administrative data goes on the stack. But the same happens with std::unique_ptr. So in your code, the use of std::unique_ptr is superfluous and only increases indirection, which might be bad for performance. So just write:
template &lt;typename TKey, typename TWeight&gt;
class Graph {
    ...
    struct Vertex {
        ...
        std::forward_list&lt;Adjacent&gt; adjVertexList;
        ...
    };
    ...
    std::unordered_map&lt;TKey, Vertex&gt; vertices;
    ...
};