The simplest answer to all those questions, is to use an EKF. But since you are not familiar with the mathematical formulas of EKF here are some possible methods which might be useful for your problems. Here I'm trying to explain some steps of the EKF in a simple manner.
Let's start with your second question. Dead Reckoning method can be used to estimate the current position using raw odometry data such as wheel encoder readings. Assume that you know the current heading and the velocity of the robot at time t. Then you can calculate it's position in the next second (t+1) assuming that velocity is constant. But the calculated position may differs from the actual position due to various reasons such as drifts, velocity changes etc. This is what basically happens in dead reckoning. You can use the linear acceleration values from IMU to calculate the X and Y coordinates of the robot, using S = ut + 0.5at^2. But the problem in this method is, the error accumulates with the time. In that case we fuse GPS readings with IMU readings using an EKF.
For the third question, you can calculate the speed only with the IMU readings. First calculate the linear acceleration values in world coordinate frame, then use v = u +at to calculate the current velocity.
v - current velocity u - starting velocity a - acceleration t- time
In this equation we assume that the acceleration is constant during the time step t. Therefore use a value for the time step as small as possible (around 0.01).
For the first question, I can suggest this method. usually GPS readings has a variance about 3.5m. You can measure the difference between two consecutive readings and if the difference is higher than a threshold (let's say 5m) that reading should be ignored. Until you receive a good measurement you can estimate your position with dead reckoning.
I strongly recommend you to use EKF since it provides the best solution for all these questions. No need to understand what is happening inside. MATLAB has an inbuilt function for EKF.