Why do i need prefix openssl with winpty on windows bash?

bash from Git for Windows uses mintty. mintty cannot present itself as console to openssl but winpty can because it does the required conversions. Learn the details at Git for Windows FAQ.

winpty is a Windows software package providing an interface similar to a Unix pty-master for communicating with Windows console programs. The package consists of a library (libwinpty) and a tool for Cygwin and MSYS for running Windows console programs in a Cygwin/MSYS pty

Because you try to run native openssl in not-native shell, you have to have interface of winpty