A package does not "need" dependencies. You can have a package without dependencies. However, if you want to develop something you might want to reuse some code/knowlegde of others. E. g. you might want to use message of service definitions or libraries created by others and maintained in other packages. In this case your package will "depend" on the other package that contains the message/service/library definitions and thereby you have to state those packages as dependencies. Creating packages without dependencies basically means that you have to reinvent every wheel you need for the development by yourself.
System dependencies are like ros-dependencies -> you use libraries created by others to speed up your development. However, in this case the library is not in a ros package but is installed as library on your computer, e. g. zlib for compression or opencv for image processing....