Your geopandas code will not preserve crs, it'll create an empty proj file because crs_wkt is not valid. There you should specify the wkt definition of the projection, see: GeoPandas to_file() saves GeoDataFrame without coordinate system. The empty prj file may cause problem when you open your dataset in a desktop GIS.
If there is a .prj file for the input shape and you don't want to change neither encoding nor crs you should specify only the input and output file. So let's suppose you have an esri shape named my_shape, you should have my_shape.shp, my_shape.shx, my_shape.dbf and (optionally) my_shape.prj in the same folder. This case the following code is enough to preserve crs and encoding:
shp1= gpd.read_file(i[1])
shp1.to_file(out)
And the encoding and the crs will be preserved.