`libgnutls-dev` `libgtk-3-0` `libwayland-server0` `libxcb1` `libx11-6` `libffi-dev` `libncurses5-dev`
`libgnutls-dev` `libgtk-3-0` `libwayland-server0` `libxcb1` `libx11-6` `libffi-dev` `libncurses5-dev`
The number is a version for when they provide more than one that can be installed at once (excepting where it's part of the library name, presumably like xcb1).
I.e. at some point you could probably install libgtk-3-0 and libgtk-2-$something at the same time. They likely leave it that way when they get rid of libgtk-2 so that existing tutorials that reference libgtk-3-0 don't fail because the package is now libgtk.
The libwayland-server0 one does get me, I don't know why there's a 0 at the end. I do know that in /var/lib there is often the same library with various .$number endings, but I've never looked into what that accomplishes.
ABI versioning.
Nothing special about the trailing 1 or 0; that's just part of the package name/version.
Though -dev means stuff only needed when developing against it.
Number means major version number (so compatibility number). This way you can easily install multiple major versions as dependencies for different packages without clashing or breaking.
If I install openssl, I want everything that upstream ships, which means command line tools, headers, libraries, man pages.
The Debian/Ubuntu convention is terrible, and anachronistic. Disk space is cheap, my time is not.
During the build of a program, you record which numbered suffix (= ABI version, should be the same as the .so.N suffix but that's not how you look it up; this allows you to install multiple incompatible copies of the library and they will be used by the appropriate, though distros usually prune these after each major release) is used. This should be automatic. (if there's more than one number, all but the last are part of the library name itself. There might be exceptions for BSD-style libraries?)
When installing, you should be automatically using the dependency you recorded during the build.
And, as for the -dev packages:
1) As always, a tooling issue (aka why is there no IDE for this?) 2) A design issue: no sub-packages/"aspects"