I call the second form like this:
FormEnter:= TFormEnter.Create(Self);
FormEnter.Show;
FormEnter.Free;
I believe, you should call FormEnter.ShowModal(); in your example code, otherwise, that example code immediately free the form you are trying to show on the screen.
When you call second form, set it's left and top properties in OnCreate() event both to zero in order second form to appear on the tiny WinCE screen. When you mention about flashing, I believe, second form is displayed on the screen, but it has a coordinate (left, top) so high that it simply cannot be visible on the WinCE screen.
My experience with WinCE, WindowState do not work on it. So, leave it as wsNormal. You should set height, width, top and left manually in your code.
I did not have problem setting window size in my code at run-time, yet.
BTW, would you tell us what version of Lazarus & fpc you are using? WinCE has some bug fixes. It maybe possible you are using a version without these fixes. I just cannot remember the SNV revision number. All I can say is Lazarus SNV 56773 and fpc version 3.0.1 are working OK for me.