First, there is no true randomness in today's computer-generated "random numbers." All pseudorandom generators use
deterministic methods. (Possibly, quantum computers will change that.)
The difficult task is to contrive algorithms
that produce output that cannot meaningfully be distinguished from
data coming from a truly random source.
You are right that setting a seed starts you at a particular known
starting point in a long list of pseudorandom numbers. For the generators implemented
in R, Python, and so on, the list is hugely long. Long enough that
not even the largest feasible simulation project will exceed the 'period'
of the generator so that values begin to re-cycle.
In many ordinary applications, people do not set a seed. Then an unpredictable
seed is picked automatically (for example, from the microseconds on the
operating system clock). Pseudorandom generators in general use have been
subjected to batteries of tests, largely consisting of problems that have
proved to be difficult to simulate with earlier unsatisfactory generators.
Usually, the output of a generator consists of values that are not, for
practical purposes, distinguishable from numbers chosen truly at random
form the uniform distribution on $(0,1).$ Then those pseudorandom numbers
are manipulated to match what one would get sampling at random from other
distributions such as binomial, Poisson, normal, exponential, etc.
One test of a generator is to see if its successive pairs in 'observations' simulated as
$\mathsf{Unif}(0,1)$ actually look like they are filling the unit square
at random. (Done twice below.) The slightly marbled look is a result of inherent variability.
It would be very suspicious to get a plot that looked perfectly uniformly
grey. [At some resolutions, there may be a regular moire pattern; please
change the magnification up or down to get rid of that bogus effect if it occurs.]
set.seed(1776); m = 50000
par(mfrow=c(1,2))
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))

It is sometimes useful to set a seed. Some such uses are as
follows:
When programming and debugging it is convenient to have predictable output.
So many programmers put a set.seed
statement at the start of a program
until writing and debugging are done.
When teaching about simulation. If I want to show students that
I can simulate rolls of a fair die using the sample
function in R, I could
cheat, running many simulations, and picking the one that comes closest to
a target theoretical value. But that would give an unrealistic impression of how simulation really works.
If I set a seed at the start, the simulation
will get the same result every time. Students can proofread their copy of
my program to make sure it gives the intended results. Then they can run
their own simulations, either with their own seeds or by letting the program
pick its own starting place.
For example, the probability of getting the total 10 when rolling two fair dice is $$3/36 = 1/12 = 0.08333333.$$ With a million 2-dice experiments I should get about two or three-place accuracy. The 95% margin of simulation error is about $$2\sqrt{(1/12)(11/12)/10^6} = 0.00055.$$
set.seed(703); m = 10^6
s = replicate( m, sum(sample(1:6, 2, rep=T)) )
mean(s == 10)
[1] 0.083456 # aprx 1/12 = 0.0833
2*sd(s == 10)/sqrt(m)
[1] 0.0005531408 # aprx 95% marg of sim err.
When sharing statistical analyses that involve simulation.
Nowadays many statistical analyses involve some simulation, for example a permutation test or a Gibbs sampler. By showing the seed, you enable
people who read the analysis to replicate the results exactly, if they wish.
When writing academic articles involving randomization. Academic articles usually go through multiple rounds of peer review. A plot may use, e.g., randomly jittered points to reduce overplotting. If the analyses need to be slightly changed in response to reviewer comments, it is good if a particular unrelated jittering does not change between review rounds, which might be disconcerting to particularly nitpicky reviewers, so you set a seed before jittering.