What is the difference between CircleCast and OverlapCircle

Int the Docs, here Unity - Scripting API: Physics2D.CircleCastAll and here Unity - Scripting API: Physics2D.OverlapCircleAll it says in the description that one casts against all colliders in the scene and the other returns a list of all colliders in a given circle.

How do they differ?

You need to visualize the first one as somehow moving along a direction at a certain distance.

You would use OverlapCircle for instance to find if there is any enemies close to the player:

Collider2D [] colliders = Physics2D.OverlapCircleAll(player.position, 1f, enemyLayer);
if(colliders.Length > 0)
{
      // enemies within 1m of the player
}

The second is more appropriate for instance for a spell you would throw in front of the player:

RaycastHit2D[] hits=  Physics2D.CircleCastAll(player.position, 1f, player.right, 10f, enemyLayer);
foreach(RaycastHit2D hit in hits)
{![35452-presentation1.png|1280x720](upload://pcOqsHEcTxiIPHVqKOzBBi3YdC8.png)
    ApplyDamage(hit.collider.gameObject);
}

Considering you have a side scrolling game, player is facing right, anything within 10 unit in that direction will be taking damage if it is in the enemy layer and within 1 unit from the center of the cast.

On the picture below the blue point in the center is the position, in the second case the vector indicates the direction and the given magnitude.

Anything within the the blue bounds is taken and added to the result array.