But basically the answer is: yes, you can! You can even write an SPA using nothing but the regular W3C APIs! React just makes it very easy to keep the DOM in sync with your application state.
[0] - https://github.com/mikechau/react-primer-draft#react-router
1: https://facebook.github.io/react/docs/events.html
2: https://facebook.github.io/react/docs/component-specs.html
It includes react-router, and quite a few good libraries/examples for flux, requests, immutable.js, etc.
Sure. You may not want to depending how big and complex the application is, but it's definitely possible.
A router and an immutable collections library (immutablejs or mori for instance) are very convenient additions, but by no means necessary. Hell you don't need a precompilation phase either by skipping JSX (and unsupported ES6 constructs).
Checkout: http://youmightnotneedjquery.com/#ajax