First, let me say that XS a relatively small set of keywords that makes wrapping C libraries for use from perl easier (see perlxstut and perlxs). In order to use it, however, you will have to learn the perl API (see perlapi) which in turn requires a shallow knowledge of how the perl compiler works (see perlguts and the somewhat outdated but still highly useful perl guts illustrated). That's a lot to learn at the same time. In short:
- XS itself => not hard
- perlapi => moderately hard
- perl inner workings => pretty hard
- all of the above at the same time => ouch
That being said, if you want to wrap a C++ library, have a look at the ExtUtils::XSpp module on CPAN. It comes with a very simple example. The module's not that old and still being improved, but it makes wrapping C++ a lot more convenient.
PS: If you plan to learn everything at once, learn by examples. Check out Dean Roehrich's cookbooks. Maybe use some simple XS modules as models: Parse::ExuberantCTags, Math::FFTW or one of the many others on CPAN.