The pictures are the profile pictures for the user who generated the activity (in this case me). The user has to have a picture set at the time the event was created or it will always show the grey portrait.

You need to create custom token replacement logic within the UI web part you build. There is no logic in the activity feed subsystem which handles the rendering. It is all contained within the web part code behind logic.

If you need to store ‘other information’ that doesn’t fit within the normal ActivityItem properties then i suggest using the ‘Value’ of the Link object to store the extra info. If you read through the code sample for the ECm item then you will see it stores extra info. This then gets pulled out by the web part code to produce thumbnails etc. You should avoid direct lookups during rendering as it will be far slower than pre-processing within the timerjob.