Head or Tail operation will not modify the original list (the element is not removed from the list), only you get it as a separate object. So subsequent operations after head/tail does not make any effect as is the item was removed from list.
To get the second item in list, there could be multiple approaches:
This would probably work
if you have taken the head from 'NewValueStreamList’. Instead I think your head-activity takes the head of the original 'ValueStreamList’. So that would explain your unexpected results.
However you solve this puzzle, it would make easier reading and easier testing if you do this in a subflow that you call ValueStreamList_GetSecondItem. In this subflow you can also better handle lists containing less than 2 objects.