Concrete example of an admissible A* heuristic compared to Djisktra
In other words, Djikstra is a form of A* where the heuristic always returns the actual distance.

This is wrong.  Dijkstra's is a form of A* where the heuristic is always 0.
Dijkstra's algorithm is essentially the weighted-graph version of a breadth-first search.  It simply spreads out from the start node in all directions until it researches the end node.  It could spend a lot of time searching paths that are going in the complete opposite direction of the end, because it doesn't know anything about the global properties of the graph.
That's where the heuristic comes in.  Since we know the approximate direction of the end, we can prioritize searches that move in that direction.  In a 2D graph, for example, this would mean prioritizing searches that are closer to the end from a bird's-eye view.
The heuristic is added to the total distance so far to determine which nodes to consider next.  If the heuristic is 0, then we're only using the distances known so far, meaning we don't prioritize any direction and we get Dijkstra's algorithm again.  However, if it's non-zero, we do prioritize certain directions, which hopefully leads to us reaching the end sooner.
Note that the heuristic is just an estimate, not the actual distance to the end.  In fact, it's more than an estimate - it's a lower-bound to the actual distance (that's what &quot;admissible&quot; means).  In our 2D example, our heuristic is the bird's-eye view straight-line, which is the shortest possible path between two points.  Adding obstacles will never decrease this path length, only increase it.