The best way to learn PKCS #11 is, well, to read
It is a complete API description containing everything you need to know and more. Unfortunately, it might be a bit more than you'll actually need, and finding the information you do need can be a bit hard. However, when you understand the basics, it gets a lot easier.
In this chapter we'll give a brief overview of how to use it, and how to read the specification and find information relevant to your situation fast.
The PKCS #11 standard uses Hungarian notation, together with CamelCase for its identifiers. To differentiate between our own example names and PKCS #11 names, we'll use underscore-delimited identifiers in our examples. We do however declare variables in CamelCase when they are used as arguments for PKCS #11 functions.