Maximum speed is changed by so many things that there is really no way to calculate it in advance. And it isn't a common question. Usually, people have a known load and desired speed, and want to know what driver / power supply / motors will be required to reach that goal.
You can make a reasonable estimate of the power required to drive a given load at this page:
techref.massmind.org/techref/io/stepper/estimate.htm
1. You can program an Arduino to do just about anything, and it can certainly produce pulses faster than a stepper motor can handle.
2. Pulse width is specified in the driver data sheet. As I said, max speed is impossible to know in advance.
3. Stepper motors don't have a minimum pulse duration, stepper motor /drivers/ have a minimum pulse width. Stepper motor datasheets have a graph that shows the torque at different speeds.
5. Again, minimum pulse width is in the driver datasheet. Max frequency can't be predicted. I have no idea why you would want to use a shift register or H-bridge between a 555 and a stepper driver... The 555 can generate pulses to test the driver and motor. For more complex control of multiple drivers / motors, you would need an arduino or PC.
For help with designing a 555 timer circuit see:
techref.massmind.org/techref/logic/555s.htm