Your problem is that the indexes at which you're inserting are no longer valid after the first insert, because you have increased the size of the list. If you change your code to insert x instead of 0, and print vbn in each iteration of the loop, you can see what is happening:
vbn = [1,0,2,3,0,4,5,0]
s = 0
for i,j in enumerate(vbn[s:]):
if j == 0:
vbn.insert(i+1,'x')
s += i+2
print(vbn)
Output:
[1, 0, 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 'x', 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 'x', 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 'x', 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 'x', 0, 4, 'x', 5, 0]
As you can see, even the second insertion occurs at the wrong place. You can work around this by adding an offset to the insertion point, and increasing that offset each time you make an insert:
vbn = [1,0,2,3,0,4,5,0]
s = 0
o = 1
for i,j in enumerate(vbn[s:]):
if j == 0:
vbn.insert(i+o,'x')
s += i+2
o += 1
print(vbn)
Output (in this case you can see x being inserted in the places you expect):
[1, 0, 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 'x', 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 'x', 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 'x', 4, 5, 0]
[1, 0, 'x', 2, 3, 0, 'x', 4, 5, 0, 'x']
Just change the x back to a 0 to get your desired result. Note that I'm not sure what the s += i+2 code is for; I've left it in on the presumption you use it after the loop.