What does the first dash mean in an ls -l output?

The first dash - indicates that the file is a regular file.

GNU Coreutils: 10.1.2 What information is listed

These options affect the information that ls displays. By default, only file names are shown.

...

‘-l’
‘--format=long’
‘--format=verbose’

In addition to the name of each file, print the file type, file mode bits, number of hard links, owner name, group name, size, and timestamp (see Formatting file timestamps), normally the modification time. Print question marks for information that cannot be determined.

...

The file type is one of the following characters:

‘-’ regular file
‘b’ block special file
‘c’ character special file
‘C’ high performance (“contiguous data”) file
‘d’ directory
‘D’ door (Solaris 2.5 and up)
‘l’ symbolic link
‘M’ off-line (“migrated”) file (Cray DMF)
‘n’ network special file (HP-UX)
‘p’ FIFO (named pipe)
‘P’ port (Solaris 10 and up)
‘s’ socket
‘?’ some other file type


It'll be a d for a directory, l for a symbolic link, c for a character device, b for a block device, p for a FIFO (first-in first-out special file), s for a socket.