Per quanto riguarda il return 0, trovi qualcosa qui:
Mentre per quanto riguardo il valore di ritorno, forse questo esempio potrebbe chiarirti come funziona:
#include <stdio.h>
int foo(int x)
{
if(x==1)
return 1;
else
return -1;
}
int main()
{
int a,p;
scanf("%d",&a);
p=foo(a);
printf("Il valore restituito dalla funzione e': %d\n",p);
return 0;
}