No, allora le due funzioni non sono chiamate una dopo l'altra, è solo per farti vedere il diverso comportamento, prova a compilare:
codice:
#include <iostream>
#include <stdlib.h>

using namespace std;

void funz1();
void funz2();

int main(int argc, char *argv[])
{
  for(int i=0;i<10;i++)funz1();
  for(int i=0;i<10;i++)funz2();
  system("PAUSE");	
  return 0;
}

void funz1(){
 static int var = 0;
 var++;
 cout << var;
}
void funz2(){
 int var = 0;
 var++;
 cout << var;
}
allora funz1() ti stamperà 1,2,3,...,10 in quanto ogni volta che la chiami la variabile var tiene memoria del valore della chiamata precedente a funz1() (delle chiamate ad altre funzioni non può tenere memoria in quanto è una variabile locale di funz1().
Funz2 ti stamperà sempre 1 in quanto ad ogni chiamata la variabile è reistanziata; c'è da osservare che una variabile di tipo static viene inizializzata solo una volta, la prima volta che viene chiamata la funzione, ecco perchè non si riazzera ogni volta che richiamo la funzione.
Spero ora di aver chiarito meglio.