If this is the correct scenario, will it be cheaper (server-wise) to request for my vcard on each connect?

yes this is correct. When your users use only your XMPP client then receiving the vCard once is fine. When your users also use other XMPP sometimes where they could change the photo as well you have to request the vcard on every login. Otherwise you cannot know if the photo has been updated or not.