While your code in the Boid_GUI_OpeningFcn function is adding the timer to the handles structure, you are only modifying the "local" copy of it. If you want to save these changes to this structure, then you need to call guidata so that all other callbacks (from that point on) receive the updated version of handles. So in the Boid_GUI_OpeningFcn just do
function Boid_GUI_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.N = 20;
boid.pos = 5000.*rand(handles.N,2);
boid.vel = [150.*rand(handles.N,1) 10.*rand(handles.N,1)];
boid_plotter(boid,handles)
handles.timer = timer;
set(handles.timer,'TimerFcn',{@my_callback_fun,handles},'Period',.1)
set(handles.timer,'ExecutionMode','fixedRate','UserData',boid)
guidata(hObject, handles);
I just moved the line guidata(hObject, handles); to the end of the function. Note that whenever you make a change to handles you always need to call guidata in this manner.
Best Answer