When you add songparts to a song, each is assigned a rackspace/variation. This allows you to pick the rackspace you’ll use for the verse, chorus, etc and then - as dhj says - you switch songparts which then selects the rackspace.
The idea is that you build up a library of ‘sounds’ in rackspaces and then these can very easily be re-used across multiple songs. Your MIDI controller will be set up to switch song parts and so across an entire set you are able to access all the different rackspaces you need but your midi controller just has to send out the same set of messages for each song (song part 1, part 2 ,etc).
You don’t have to set up songparts as actual song parts either - for example I use them to provide a range of tones for each song; clean, rhythm, drive, lead, ambient, etc. Each song might have a different rackspace assigned for each of these (song 1 might have a Marshall tone for ‘drive’, song 2 might use a Mesa tone for ‘drive’ etc) but doing it this way means I can set my MIDI controller to always send out, say, note C#2 when I want to go to the drive song part and I don’t have to remember or reprogram my midi controller for each song for the rackspace I want to choose.
I think I probably over-explained that…but hopefully it makes sense!