In order to increment apex:variable inside the apex:pageBlockTable, we have to include it inside apex:column in apex:pageBlockTable.
<apex:page controller="sample">
<apex:pageBlock >
<apex:variable var="i" value="{!0}"/>
<apex:pageBlockTable value="{!acnt}" var="acc">
<apex:column >
{!i}
<apex:variable var="i" value="{!i+1}"/>
</apex:column>
<apex:column value="{!acc.Name}" rendered="{! IF((mod(i,2)) == 0, true, false)}" style="background:pink;"/>
<apex:column rendered="{! IF((mod(i,2)) == 0, true, false)}" style="background:pink;" value="{!acc.Rating}"/>
<apex:column value="{!acc.Name}" rendered="{! IF((mod(i,2)) == 1, true, false)}" style="background:yellow;"/>
<apex:column rendered="{! IF((mod(i,2)) == 1, true, false)}" style="background:yellow;" value="{!acc.Rating}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:page>
In case of apex:repeat, we can just write as below
<apex:variable var="i" value="{!0}"/>
<apex:repeat>
<apex:variable var="i" value="{!i+1}"/>
</apex:repeat>
ISCHANGED