>つまりint mainはこれから整数のプログラムが始まるって意味。
ちがう。

int main()
{
return 0;
}
これのintは戻り値の型がintであると言っている。
return 0;の0がint型なんだよ。ちなみにここの0は変数ってわけではない。
変数ってのは変わる数だから変数。ようはhoge=2みたいなのが変数。

char func()
{
return 'G';
}
これは戻り値がcharの関数func。
戻り値がchar。'G'はchar型。

>return 0でmain関数に呼び戻されるから整数mainは整数hoge=2となる。
なにをいってるかわからないな。なにか誤解している。
hogeが2で表示がHello World2になるのは当たっている。