I guess everything is in the title... But I'll rephrase here. The documentation says:
\seq_new:N -> Creates a new ⟨seq var⟩ or raises an error if the name is already taken. The declaration is global. The ⟨seq var⟩ initially contains no items.
But it also defines:
\l_tmpa_seq -> Scratch sequences for local assignment. These are never used by the kernel code, and so are safe for use with any Latex-defined function. However, they may be overwritten by other non-kernel code and so should only be used for short-term storage.
So what's the point in having a local but global variable? This is the also case for other types.

\seq_set:Nnthe value is set locally. if you do\seq_gset:Nnit is global. the\l_or\g_tells you which is appropriate for this particular variable. so the existence of the variable can be global, even though it is set or changed locally.\l_or\g_ltells you wich is appropriate... do you mean that it's just a convention? I could use\seq_gset:Nn \l_tmpa_seq {A,B,C}?expl3is just a convention. there are some checks and there may be more in the future, but, for the most part it would simply be too expensive to enforce the conventions as the underlying TeX does not make (m)any of these distinctions. so you could (probably) say e.g.\seq_gset_from_clist:Nn \l_foo_bar_tl {A,B,C}and not get an error. the pressure to conform to the conventions laid down by the LaTeX Project is largely social :-).\debug_on:n { all }.