This is not the sole province of "old" console (command line) applications. Every running program has a "command line" that points at the executable image and includes any command line parameters. Plenty of GUI apps take arguments that alter either their initialization behavior or runtime behavior or both.
Most languages do let you specify an entry-point function that takes no arguments. But virtually all of them also allow you to pass arguments. This args
array is simply an ordered collection of whatever is passed on the command line after the name of the executable file when the program is executed. EDIT: And of course in the case of the C language (as one example), the first argument (index 0) is actually the name of the program.
For example, imagine a pointless little program that displays a message in a message box, and lets you specify the message and the title for the window on the command line, like this:
myprogram.exe -title Foo -message Bar
Your args array in this case will look like this, presuming a language like C# which does not include the program name in the args
array:
args[ 0 ] = "-title"
args[ 1 ] = "Foo"
args[ 2 ] = "-message"
args[ 3 ] = "Bar"
Making sense of the order of the arguments, and which ones are valid or not, is totally up to your own application code.