It means "contruct object1 with these parameters, and object2 with these parameters". For primitive types (integers, floats, and pointers) there's no difference between that, and just assigning to the variable. It's not the same with some objects, though.
Just to give two examples:
1 2 3 4 5 6 7 8 9 10 11 12
class A{
int a;
public:
A(int b):a(b){}
};
class B{
int a;
public:
B(){ exit(0); }
B(int b):a(b){}
};
A doesn't have a constructor that takes no parameters, so if you don't explicitly construct it as above, you'll get a compiler error.
B, on the other hand, has a constructor that takes no parameters, but it messes up the state so bad that it shouldn't be used under most circumstances. In this example, it terminates the program.