1) Ano, PyDoc_STRVAR je makro.
2) Ano, existuje více způsobů. Podívejte se do dokumentace. Naleznete například METH_KEYWORDS, METH_NOARGS, ..
3) Dokumentační řetězec můžeme úplně vynechat, je to nepovinný. Tedy například stačí { "minus", py_minus, METH_VARARGS }. Já si však myslím, že je dobré psát alespoň základní dokumentaci o funkci, a tím je její hlavička.
4) Tento příklad byl testován na 2.6. Pro Python 3 jsem to nezkoušel, vyzkouším.
5) Zda lze zavolat C funkce přímo v Pythonu nevím, nikde jsem se s tím nesetkal a podle mě to ani není možné.
Samozřejmě není potřeba si psát vlastní moduly v C/C++ (zvlášť tento příklad), ale pokud píšeme nějaký výpočtově náročný program a chceme dbát na rychlost, tak je velmi vhodné si napsat výpočet v C/C++.

