i have a few questions on variable scope and the differences between arduino and c++.
There's no difference. There is no such thing as the "Arduino language." It is C++.
a variable declared inside a function is a local variable that can only be accessed by that function. this is where it gets fussy.
There is no fuss.
if i were to run this code the declaration of bob as void loop repeats would not affect the value of bob after a value is stored.
No. Each time loop() repeats, bob gets re-initilized. If you happen to be seeing the same value every time, you're getting lucky as the same memory location keeps getting reused. This behavior is no guaranteed.
but would steve be redeclared with the value 5 every time void loop repeats?
That's exactly what you told the code to do.
if it does always reset to 5 how can variables get an initial value inside a local scope without declaring them globally?
The keyword, a C++ keyword, is static.