I'm not sure how much of this is useful for making a private server. It's also old information, as I don't know what's changed because I haven't played for a long time. I may also be wrong on some things. I'm just going to list stuff as I remember, so this is going to be a mess.
Triggers for cutscenes, enemy spawns, zone walls and the like are in the map data. They are often based on position. The actual enemy spawns are handled by the server, meaning that even if you set off the triggers, nothing will happen until the server sends the info on the enemy spawn. Item drops are also handled by the server, ie. nothing drops if the server does not tell the client that there is a drop. I think some music triggers are also handled by the server.
During some cutscenes, players are transported to a "safe" empty area where they won't be able to move or interfere with the cutscene. They are teleported back when the cutscene ends.
Entering town rooms or new areas (fading in and out, teleporting) are defined in the maps. The client tells the server when they're changing map by using Source Engine commands (eg. changelevel). The game seems to rely on feedback from the server on what options are available when in a room (eg. buy, sell).
The story script, item descriptions, item/skill/enemy names, etc. are all included in the client files. The client won't do anything story or quest-related until the server sends the references for the client to look things up. I think the reference codes are listed in the files, but I don't remember clearly.
I think there are various scripts inside the maps and the actionscript files that tell the game what to ask or expect from the server. You'd need to look into them with the appropriate tools.
There's a database in the files with lots of information, but I don't know if it's outdated or if the server itself uses the same database. Information includes enemy stats, etc.
There's a text file in the main folder that you can edit to redirect the game to check for updates at whatever address you like. It's very easy to bypass updates.
If I recall correctly, there's a separate server for the in-game chat that you can IP block/delete the files of. I forget what it's called. Nexon Game Messaging Service or something along those lines.
I believe the game's script data is compiled in the engine.dll, and that needs to be kept up to date or various newer functions (eg. new enemies, skills, cutscenes, etc) will not work on the client (ie. nothing happens). The engine.dll also works together with client.dll and server.dll, meaning the game tends to not work if you try mixing different versions of those files.
All the costume data is handled client-side, and does not rely on engine.dll. I think things like new skills do rely on the engine.dll, so even if you try create new skills, they need to be defined in there or they won't work.
I don't quite understand how this works, but the game seems to rely heavily on the client. For example, if there is significant lag between server and client, the client will still often be able to see things happen and react in real-time on their side. For example, others watching a lagging player will hear/see the enemy hit the lagging player character, but after a second or two, the player character will dodge without taking damage. There seems to be an exception where a very bad connection will cause everyone connected to the server to jerk horribly.
There's a console hack that lists console feedback information. It may be for donators only. It'd probably be very helpful for creating a server.
There's a developer mode and various commands that are developer-locked. I think the functionality of the developer commands was removed from the public engine.dll. There is a developer version of the game that is distributed to GMs and developers from a protected Nexon server. The developer version likely has the commands enabled. Attempting to change the region of the client from non-developer to developer inside the executable or DLLs does not seem to enable the commands. It might still be possible to do so, as I probably wasn't going about it the right way.
There's a debug/developer menu with buttons that correspond to commands inside a script included in the client files. I think the menu only appears in-game if you force sv_cheats 1.
Skill level info, requirements, conditions, etc are all included in the client (eg. how much defense you get from a defense up skill, etc). Various other player constants are also included in the client (eg. movement speed). Skill animation events are also in the client data (eg, spawn effects or projectiles, transform or change costume, at specified frames). In many instances, modified data would be sent to the server and back without any problems, meaning everyone would see the changes. If the person hosting uses modifications, they tend to apply to the entire group.
Extreme Mode is a switch. When using it, it will use a different set of configs/constants and player animations, skills, enemy AI, etc. These are all stored client-side as well. I don't remember now, but I think a map change is required to refresh Extreme Mode to work correctly.
I think status effects are defined in the engine.dll, and some of them refer to another status effect file for some numbers.
The last I tried, clients are unable to connect to each other using console commands. I may have not done it correctly.