Assign a day of the week to post, e.g: Assign Monday to post and have it only appear when the day is Monday

You can use the built-in tag system for something like that. Create a tag for each day of the week, and then tag that post with one of those days. Wherever you display your posts, just check what today’s week day is using the DateTime object and make a query for posts that match that tag.

Get today’s week day:

$date = new DateTime();
echo $date->format('l');

Display posts in template using today’s week day:

<?php $query = new WP_Query(['tag' => $date->format('l')]); ?>

<?php if ($query->have_posts()): ?>

    <?php while ($query->have_posts()): $query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>

<?php endif; ?>

Alternatively, you could perhaps also just use the publish date to determine what day it was published, and not even need a tagging system at all.