The dash (-) means you don't need any flag at all to match.
The pipe (|) means "OR", and is used to separate the global flags from the channel-specific flags. You could also use the ampersand (&) as "AND" to require both global and channel-specific flags.
First one maches against the global flags, second against channel-specific flags. If you use the OR-separator, having one of them matching is enough; if you use the AND-operator on the other hand, you'll have to match them all.