Yes, it's weird. \section in the regular use-case can have any of the following 3 input styles:
\section{<title>}
\section[<ToC title>]{<title>}
\section*{<title>}
However, it's not clear how any of these relate to its definition (in article.cls):
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-2.5ex \@plus -1ex \@minus -.2ex}%
{1.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
That's because \section uses \@startsection that actually defines a large number of spacing and formatting parameters. In fact, \@startsection itself is just an intermediary macro that grabs only 6 arguments (from latex.ltx)
\def\@startsection#1#2#3#4#5#6{%
\if@noskipsec \leavevmode \fi
\par
\@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\if@nobreak
\everypar{}%
\else
\addpenalty\@secpenalty\addvspace\@tempskipa
\fi
\@ifstar
{\@ssect{#3}{#4}{#5}{#6}}%
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
before handing it over to \@ssect or \@dblarg, depending on whether you used \section or \section*. That's why it's odd - \section is defined to not take any arguments, yet we can supply it with arguments; that's because the arguments are taken and processed by secondary macros contained within \section and deeper.
For more detail about what each argument in \@startsection does, see Where can I find help files or documentation for commands like \@startsection for LaTeX?.
Specifically, the spacing arguments passed to \@startsection contain glue-like lengths which, in general, have the following format
<lengthA> <plus> <lengthB> <minus> <lengthC>
Since the LaTeX kernel defines \@plus/\@minus to be plus/minus, users often mix these as needed. In short the format suggests that the resulting length could be anything between
<lengthA> + <lengthB>
(at maximum) and
<lengthA> - <lengthC>
(at minimum). Specific to the 4th argument of \@startsection, the (vertical) beforeskip for a \section could be as small as 2.3ex (2.5ex - .2ex) or as large as 3.5ex (2.5ex + 1ex)*. Similarly, the afterskip ranges between 1.3ex and 1.5ex (1.3ex + .2ex). The actual value used depends on the other contents used to fill the page (since this glue/stretch is vertical).
* Note that \@startsection's 4th argument sign (positive or negative) is removed from the length calculation and actually denotes the use/suppression of paragraph indentation following a \section. See Where can I find help files or documentation for commands like \@startsection for LaTeX? for details.
@is a letter, but normally it something else (other). That means internally there can be command names like\@startsection. These can only be used internally. The command\@plusexpands toplusand\@minustominus. – StefanH Oct 25 '19 at 14:48\@startsectionfor LaTeX? – Werner Oct 25 '19 at 17:59