OK, I didn't read the entire documentation there, I only looked at their API samples where cURL is used and PHP. They both indicate the info is taken on the server and transmitted to Stripe.
It is possible to use their API to charge cards directly.
However the recommended approach is one of two...
There is a Checkout.js implementation which renders the payment form in an iframe and is 100% managed by them. You can see that in action here:
https://stripe.com/checkout
Then there is a more DIY integration in which you render the form fields in your own template, fits in with your own style, etc.
Both of these, however, support card tokenization. This is where the card details are submitted to Stripe using their provided JS, Stripe converts the card details and returns a token. You receive the token and the only thing you submit from that form is the token (if you're rendering your own form fields, they should be without name attributes so they never touch your server).
You then make API calls with that token and that is what triggers a charge to the credit card.
This defers a lot of the PCI compliance in their direction, so, effectively, you shouldn't need to do much.
However, the first approach, Checkout.js qualifies for the PCI DSS SAQ-A whereas the latter approach - because you are rendering the fields on your own server - qualifies for PCI DSS SAQ-A EP.
https://www.pcisecuritystandards.org/documents/Understanding_SAQs_PCI_DSS_v3.pdf
That explains a little bit about what the SAQ stuff is. There is other documentation which is pretty extensive. Wherever possible I would recommend implementing a method that qualifies for the SAQ-A. There are still things you need to do to ensure you are compliant, but they are mostly common sense. You wouldn't think it but SAQ-A EP requires a lot more of you.